【问题标题】:pass data from one view to another django将数据从一个视图传递到另一个 Django
【发布时间】:2020-02-10 22:00:32
【问题描述】:

我的应用中有两个视图

Views.py

def selectwarehouse(request):
    z = Warehouse.objects.all()
    return render(request, 'packsapp/employee/selectwarehouse.html', {'z': z})

def warehouse_details(request):
    queryset = AllotmentDocket.objects.filter(send_from_warehouse = #dynamic(from the selectwarehouse.html))

    return render(request, 'packsapp/employee/allotwarehousedetails.html', {'query': queryset})

selectwarehouse.html

{% block content %}

<label>Select Warehouse<label>
    <select id="the-id">
        {% for i in z %}
        <option value="{{ i }}">{{ i }}</option>
        {% endfor %}
        <form method="post" novalidate>
            {% csrf_token %}
            <a href="{% url 'employee:warehouse_details' %}" class="btn btn-outline-secondary" role="button">Proceed</a>
            <a href="{% url 'employee:products_table' %}" class="btn btn-outline-secondary" role="button">Nevermind</a>
        </form>
    </select>
    {% endblock %}

URLS.py

    path('select-warehouse/', selectwarehouse, name='select_warehouse'),
    path('warehouse-details/', warehouse_details, name='warehouse_details'),

我希望当一个人从下拉列表中选择“仓库”并单击 Proceed 时,它应该将该值传递给 def warehouse_details 并将该值传递给分配查询集。我该怎么做?

【问题讨论】:

  • 您需要在&lt;form ...&gt;中指定action="url/to/warehouse_details/view"。你的&lt;option&gt;s 应该是表单的一部分
  • @YevhenKuzmovych 而不是href,我应该将它定向到warehouse_details 视图?
  • 是的,我想是的。否则,该按钮只会将您重定向到带有GET 而不是POSTemployee:warehouse_details URL,并且没有来自&lt;option&gt;s 的任何信息。
  • @YevhenKuzmovych 我是 django 模板的新手,你能告诉我怎么做吗?
  • 您的 html 表单由内而外,&lt;a/&gt; 元素在 html 表单处理中没有任何作用。了解 HTML 以使用 django 很重要。阅读一些教程。 developer.mozilla.org/en-US/docs/Learn/HTML/Forms/…

标签: html django forms


【解决方案1】:

MAKE Proceed 作为隐藏输入

模板

 {% block content %}

<label>Select Warehouse<label>
    <select id="the-id">
        {% for i in z %}
        <option value="{{ i }}">{{ i }}</option>
        <form method="post" novalidate>
            {% csrf_token %}
             <input type="hidden" name="object_id" value="{{ i.id }}">
  <input class="btn btn-outline-secondary" name="Proceed" type="submit" 
     value="Proceed"> 
            <a href="{% url 'employee:products_table' %}" class="btn btn-outline- 
        secondary" role="button">Nevermind</a>
        </form>
    {% endfor %}
    </select>
    {% endblock %}

views.py

def selectwarehouse(request):
    z = Warehouse.objects.all()
    return render(request, 'packsapp/employee/selectwarehouse.html', {'z': z})

def warehouse_details(request):
    queryset = AllotmentDocket.objects.get(id=request.POST.get('object_id'))
    //Now to access the element in queryset write (queryset.'attribute name')
    return render(request, 'packsapp/employee/allotwarehousedetails.html', {'query': 
    queryset}

检查这是否有效

尝试打印查询集,看看输出是什么。

【讨论】:

  • 不会,我只是看到'endfor'在输入之前,这就是为什么它不知道'i'是什么,在 i之后取'endfor'现在已经编辑了代码检查
  • 您还没有在表单标签中添加任何操作,添加它,否则它将无法正常工作
  • 或者给你的回购我会解决它。
  • 我不能给你回购,对不起,请帮我添加操作到继续按钮
猜你喜欢
  • 1970-01-01
  • 2015-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多