【问题标题】:how to take input from one page and send them into another page in django如何从一个页面获取输入并将它们发送到 django 中的另一个页面
【发布时间】:2020-12-12 12:33:25
【问题描述】:

我对此很陌生。我正在尝试根据用户要求在 iframe 中构建报告页面将显示在下拉菜单中,当用户单击报告名称时,用户可以看到报告,并且报告的名称将在下拉菜单中动态添加.... 我正在等待回复..在这里我将分享我所做的代码... 我还要说一件事,我不想在数据库中添加这些数据(Src、宽度、高度、报告名称)......当我点击时可以创建报告并获得相同的报告报告名称。
index.html

<li class="dropdown">
    <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Reports<span class="caret"></span></a>
    <ul class="dropdown-menu">
        <li class="dropdown-header">Reports</li>
        <li>
            <div class="buttons pull-right">
                <a href="{% url 'report:reporttest' %}" class="btn btn-xs btn-success" title="Add"><i class="fa fa-plus"></i></a>
            </div>
            <a href="{% url 'report:reporttwo' %}">Report one</a>
        </li>
        {% for item in report_item %}
        <li>
            <a href="{% url 'report:add' %}">{{item.name}}</a>
        </li>
        {% endfor %}
    </ul>
</li>

reportform.html

<form action = "add" method= "post" enctype="multipart/form-data" class="form form-horizontal">  
    {% csrf_token %}
    <div class="panel panel-default">
        <div class="panel-heading">
            <strong>Add Report</strong>
        </div>
        <div class="panel-body">
            <table class="table table-hover report-body attr-table">
                <tr>
                    <td>URL</td>
                    <td>
                        <input type="text" name="src">
                    </td>
                </tr>
                <tr>
                    <td>WIDTH</td>
                    <td>
                        <input type="number" name="width">
                    </td>
                </tr>
                <tr>
                    <td> HEIGHT</td>
                    <td>
                        <input type="number" name="height">
                    </td>
                </tr>
                <tr>
                    <td> NAME OF THE REPORT</td>
                    <td>
                        <input type="text" name="name">
                    </td>
                </tr>
            </table>
            <input type="submit">
        </div>
    </div>
</form>

report_one.html

<iframe src = {{src}} width= {{width}} height= {{height}} frameborder="0" allowfullscreen allowtransparency ></iframe>

**view.py **

def reportone(request):
    return render(request, 'report_one.html')
def reporttwo(request):
    return render(request, 'report_two.html')
def reporttest(request):
    return render(request, 'reportform.html')

def add(request):
    if request.method == "POST":
        report_item={}
        src=request.POST['src']
        width=request.POST['width']
        height=request.POST['height']
        name=request.POST['name']
        report_item={'src':src, 'width':width, 'height':height, 'name':name}
        return render(request, 'report_one.html', report_item)
    else:
        return render(request, 'report_one.html' , report_item)

urls.py

from django.contrib import admin
from django.urls import path
from extras.views import ObjectChangeLogView
from . import views

   app_name = 'report'

   urlpatterns = [
      path('reportone', views.reportone, name='reportone'),
      path('reporttwo', views.reporttwo, name='reporttwo'),
      path('reporttest', views.reporttest, name='reporttest'),
      path('add', views.add, name='add'),
    ] 

【问题讨论】:

  • 请添加您的 urls.py 文件以便进一步了解
  • @RiyasAc 完成,我也更新了报告字典

标签: django django-views django-templates


【解决方案1】:

请试试这个:

models.py

from django.db import models
class Report(models.Model):
    url = models.URLField(null=False,max_length=300)
    width = models.IntegerField(default=300)
    height = models.IntegerField(default=200)
    name = models.CharField(max_length = 50)

forms.py

from .models import Report
from django.db import models

class ReportForm(forms.Form):
    width = forms.CharField(widget=forms.NumberInput(attrs={'class':' form-control'}))
    height = forms.CharField(widget=forms.NumberInput(attrs={'class':' form-control'}))
    url = forms.URLField(max_length=300)
    name = forms.CharField(max_length = 50)

    class Meta:
        model   = Report
        fields  = [ "url","width","height","name"]

views.py

from .forms import ReportForm
from .models import Report

def reporttest(request):
    form = ReportForm()
    return render(request, 'reportform.html',{'form':form})

def add(request):
    report_item={}
    if request.method == "POST":
        obj= Report()
        obj.url =request.POST['url']
        obj.width=request.POST['width']
        obj.height=request.POST['height']
        obj.name=request.POST['name']
        obj.save()
        report_item={'src':request.POST['url'], 'width':request.POST['width'], 'height':request.POST['height'], 'name':request.POST['name']}
        return render(request, 'report_one.html', report_item)
    else:
        return render(request, 'report_one.html' , report_item)

reportform.html

<form action = "add" method= "post" enctype="multipart/form-data" class="form form-horizontal">  
  <div class="panel panel-default">
    <div class="panel-heading">
        <strong>Add Report</strong>
    </div>
    <div class="panel-body">
        <table class="table table-hover report-body attr-table">
            {% csrf_token %}
            {% for field in form.visible_fields %}
            <tr>
                <td>{{field.label}}</td>
                <td>{{field}}</td>
            </tr>  
            {% endfor %}
        </table>
        <input type="submit" >
    </div>
</div>
</form>

report_one.html

<iframe width="{{width}}" height="{{height}}" src="{{src}}" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

请试试这个。更改模型后,然后迁移它。 用于检查的简单网址:https://www.youtube.com/embed/F5mRW0jo-U4

【讨论】:

  • 不工作...我在下拉列表中没有报告名称
  • index.html 未在视图中使用??你忘了在views.py中添加任何视图吗??
  • 如果我在 index.html 中做了一些更改,例如 {{ name }} 没有 for 循环,那么我可以看到报告名称,但是当我单击名称时,这不会显示创建的报告我发现页面未找到错误,单击下拉列表中的报告名称后,报告名称的名称也被删除...我希望在下拉列表中创建所有报告名称
  • 请在新表格中保存创建的详细信息并过滤下拉列表的报告名称
  • 是否需要reporttest url 来添加报告和add url 来查看保存的数据??
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-22
  • 1970-01-01
  • 1970-01-01
  • 2017-11-03
  • 2013-01-24
  • 2014-11-08
  • 2018-03-19
相关资源
最近更新 更多