gpt4 book ai didi

Django:从表单集中获取表单ID

转载 作者:行者123 更新时间:2023-12-02 05:28:19 24 4
gpt4 key购买 nike

我不确定标题是否准确地描述了我想要的内容。我想要的是实现类似的目标:Django add / remove form without multiple submit .

但是我没有我拥有表单集和表单的项目列表。此表单集的形式确实包含我可用于创建类似 {% url 'item_edit' item.id %} 的链接的信息。问题在于它是隐藏字段的值。这里( http://docs.djangoproject.com/en/dev/topics/forms/#looping-over-the-form-s-fields )您有一个如何在模板中使用表单字段的选项列表,但它们都不是 {{ field.value }}。如果我尝试这样做,那么它就会默默地失败。

无论如何。到代码。我的模板内容是:

    <form enctype="multipart/form-data" method="post" action="/list/edit/{{ list.id }}/">
<table>
{{ form.as_table }}
{{ formset.management_form }}
{% for form in formset.forms %}
{% if forloop.first %}
<tr>
{% for field in form.visible_fields %}
<td>{{ field.label }}</td>
{% endfor %}
</tr>
{% endif %}
<tr>
{% for field in form.visible_fields %}
{% if not forloop.last %}
<td>{{ field }}</td>
{% else %}
<td>{{ field }}
{% endif %}
{% endfor %}
{% for field in form.hidden_fields %}
{% if not forloop.last %}
{{ field }}
{% else %}
{{ field }}</td>
{% endif %}
{% endfor %}
</tr>
{% endfor %}
<tr><td><input type="submit" value="Submit"></td><td colspan="4">&nbsp;</td></tr>
</table>
</form>

这给了我这样的内联表单行:

<tr>
<td><input type="text" maxlength="200" value="test2" name="shoppinglistitem_set-0-itemname" id="id_shoppinglistitem_set-0-itemname"/></td>
<td><input type="text" maxlength="200" value="http://www.xxx.ee" name="shoppinglistitem_set-0-link" id="id_shoppinglistitem_set-0-link"/></td>
<td><input type="text" maxlength="100" value="eepöäsdöäfsdfd" name="shoppinglistitem_set-0-store" id="id_shoppinglistitem_set-0-store"/></td>
<td><input type="text" id="id_shoppinglistitem_set-0-price" value="22134" name="shoppinglistitem_set-0-price"/></td>
<td><input type="checkbox" id="id_shoppinglistitem_set-0-DELETE" name="shoppinglistitem_set-0-DELETE"/><input type="hidden" id="id_shoppinglistitem_set-0-list" value="1" name="shoppinglistitem_set-0-list"/><input type="hidden" id="id_shoppinglistitem_set-0-listitem_ptr" value="5" name="shoppinglistitem_set-0-listitem_ptr"/></td>
</tr>

我正在寻找某种方法来添加这样的链接

<a href={% url 'remove_list_item' item.id %}>REmove</a> 

或者只是

<a href="http://localhost/list/removeitem/{{ id }}">REmove</a>

此 View 的 URLconf 是:

url(r'^removeitem/(?P<lisitem_id>\d+)/$', 'remove_list_item', name='remove_list_item')

那么有没有一些简单的方法可以从表单中获取项目(对象)的 id ?我是否必须为该删除链接创建某种小部件?

艾伦。

最佳答案

首先,您不应使用链接(GET 请求)来触发编辑或删除数据的操作,而应使用 POST 请求。

您仍然可以使用链接来删除数据,方法是通过 JavaScript 创建链接并使用其单击事件发出 Ajax POST 请求。使用 JavaScript,您还可以轻松地从隐藏字段读取 id。如果您的表单应该可以在没有 JavaScript 的情况下使用(并且应该如此),那么您应该创建另一个表单来删除项目(可能只是一个删除按钮)。

您应该使用表单进行删除,因为要使 Django CSRF 中间件工作,您需要表单。 CSRF-Middleware 应该位于您的中间件堆栈中。

如果您使用对象初始化 Django 表单(您可能已经这样做了),则该对象的字段将存储在名为initial 的字典中。您也许可以通过 form.initial["id"] 或在模板中访问它 {{ form.initial.id }},但我不确定是否可以它有效或者它是否是一个好主意。

关于Django:从表单集中获取表单ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1414925/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com