gpt4 book ai didi

python - Django:为什么当前 URL 不匹配 urls.py 中的任何模式

转载 作者:太空宇宙 更新时间:2023-11-03 18:13:33 25 4
gpt4 key购买 nike

我在这里发现了一些与我的问题相关的问题,但我没有找到任何可以帮助我解决问题的内容。我使用的是 Python 2.7.5 和 Django 1.8.dev20140627143448。

我有一个与数据库交互以删除对象的 View ,除了请求之外它还需要两个参数:

def delete_data_item(request, dataclass_id, dataitem_id):
form = AddDataItemForm(request.POST)
data_set = get_object_or_404(DataClass, pk=dataclass_id)
context = {'data_set': data_set, 'form': form}
data_item = get_object_or_404(DataItem, pk=dataitem_id)
data_item.delete()
data_set.save()
return HttpResponseRedirect(reverse('detail',
args=(dataclass_id,)))


myapp.urls.py中的URL看起来像这样:

url(r'^(?P<dataclass_id>[0-9]+)/(?P<dataitem_id>[0-9]+)/delete_data_item/$',
views.delete_data_item, name='delete_data_item')


我的模板中与 View 相关的部分是:

<a href="{% url 'delete_data_item' data_set.id data_item.id %}">DELETE</a>


每当我点击 DELETE链接,django告诉我请求URL:

http://127.0.0.1:8000/myapp/5/%7B%%20url%20'delete_data_item'%20data_set.id%20data_item.id%20%%7D

与我的任何 URL 模式都不匹配。我缺少什么? DELETE 所在的 URL存在的链接是 myapp/(<dataclass_id>[0-9]+)/

编辑:

我应该包含的额外细节:

当我手动输入正确的 URL(即: myapp/3/62/delete_data_item )时,会删除数据库中的项目并调用 reverse两者都工作得很好。

完整模板代码:

`<h1>{{ data_set.name }}</h1>

{% if error_message %}<p><strong>{{ error_message }}</strong></p>{% endif %}

<ul>
{% for data_item in data_set.dataitem_set.all %}
<li>{{ data_item.log_date }}: {{ data_item }}
<ul>
<li>{{ data_item.id }}</li>
<li><a href="{% url 'delete_data_item' data_set.id
data_item.id %}">DELETE</a>
</li>
</ul>
</li>

{% endfor %}

<form action="{% url 'add_data_item' data_set.id %}" method="post">
{% csrf_token %}
<li>{{ form.as_p }}</li>
<input type="submit" value="Add data item"/>
</form>
</ul>


来自浏览器的 HTML 代码:

<h1>Hours Slept</h1>



<ul>

<li>Aug. 18, 2014, 9:10 p.m.: 8 hours
<ul>
<li>8</li>
<li><a href="{% url 'delete_data_item' data_set.id
data_item.id %}">
DELETE</a>
</li>
</ul>
</li>


<li>Aug. 18, 2014, 9:11 p.m.: 1 hours
<ul>
<li>10</li>
<li><a href="{% url 'delete_data_item' data_set.id
data_item.id %}">
DELETE</a>
</li>
</ul>
</li>


<li>Aug. 21, 2014, 3:13 a.m.: 2.5 hours
<ul>
<li>60</li>
<li><a href="{% url 'delete_data_item' data_set.id
data_item.id %}">
DELETE</a>
</li>
</ul>
</li>



<form action="/lets_quantify/5/add_data_item/" method="post">
<input type='hidden' name='csrfmiddlewaretoken' value='FoDLqsbDsuTGu1LBFv3lYZvD2UBa6oUz' />
<li><p><label for="id_amount">Amount:</label> <input id="id_amount" name="amount" step="0.00001" type="number" /></p></li>
<input type="submit" value="Add data item"/>
</form>
</ul>`

最佳答案

如果您发布的模板代码是从实际文件中精确剪切和粘贴的,则 URL 标记中间的 data_set.id 之间有一个换行符data_item.id。 Django 使用一个相当简单的解析器,无法识别分成多行的标签,因此根本不会被解析为标签。

删除换行符,一切都会好起来的。

关于python - Django:为什么当前 URL 不匹配 urls.py 中的任何模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25417908/

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