首页 > 解决方案 > Django从html中获取选中复选框的列表并在views.py中处理

问题描述

我在模板中有一个复选框,并希望从选中的复选框中获取价值,以便在views.py中呈现为pdf。我需要为它创建一个表格吗?不知道如何组合它。

html:

{% for order in orders %}
 <div class="mb-3">
      {% for item in order.items.all %}
                <input type="checkbox" name="item_checkbox" value="{{ item.item.id }}" >{{ item.item.product_name }}<br>
      {% endfor %}
</div>

<a href="{% url 'generate_pdf' id=order.id %}" class="btn btn-primary" target="_blank">PDF</a>
{% endfor %}

如何获取复选框值并将其传递给views.py?

在views.py中呈现pdf

def generate_to_pdf(request, id):
    order = get_object_or_404(Order, id=id)
    time_now = timezone.now()
    template = get_template('invoice.html')
    context = {
        'order': order,
        'time_now': time_now
    }
    template.render(context)
    pdf = render_to_pdf('invoice.html', context)
    return HttpResponse(pdf, content_type='application/pdf')

我应该在下面的函数中使用 Form post 方法从 html 中获取值吗?

上述html的views.py:

def order_admin(request):
    orders = Order.objects.all().order_by('-id')

    context = {
        'orders': orders,
    }
    return render(request, 'product_admin.html', context)

标签: django

解决方案


您可以从 POST 请求中获取选定复选框值的列表,例如

checked_items = request.POST.getlist("item_checkbox")

checked_items将是已检查项目的 id 列表。

制作一个表格action="{% url 'generate_pdf' id=order.id %}"

在视图功能generate_to_pdf

def generate_to_pdf(request, id):
    order = get_object_or_404(Order, id=id)
    checked_items = request.POST.getlist("item_checkbox") # get checked values
    time_now = timezone.now()
    template = get_template('invoice.html')
    # remaining code

推荐阅读