我有一个由django生成的表单,我试图将带有表单的对象id返回给函数。
我收到了这个错误。我似乎无法弄清楚为什么它不起作用因为图片ID是有效的ID而且URL的正则表达式应该捕获它并将其返回到我的函数,除非当前的URL必须匹配,因为我当前页面的网址是1:8000 / comment / 1 /
Reverse for 'world.CommentCreator' with arguments '(1,)' and keyword arguments '{}' not found.
File "C:\o\17\mysite\pet\views.py" in CommentCreator
269. return render(request,'commentcreator.html', {'comment':comment,'picture':p,'search':CommentsForm()})
我的views.py
def CommentCreator(request,picture_id):
p = Picture.objects.get(pk=picture_id)
comment = Comment.objects.filter(picture=p)
return render(request,'commentcreator.html', {'comment':comment,'picture':p,'search':CommentsForm()})
我的网址.py
url(
r'^comment/(?P<picture_id>\d+)/$',
'pet.views.CommentCreator',
name = 'CommentCreator',
),
HTML
{% if picture.image %}
{% endif %}
<ul>
<br><img src="{{ picture.image.url }}">
</ul>
{% for c in comment %}
{% ifequal c.picture.id picture.id %}
<br>{{ c.body }}</li>
<br>{{ c.created}}</li>
<br>{{ c.user}}</li>
{% endifequal %}
{% endfor %}
<br><br><br><br>
{% if picture %}
<form method = "post" action"{% url world.CommentCreator picture.id %}">{% csrf_token %}
{{search}}
<input type ="submit" value="Search "/>
</form>
{% endif %}
答案 0 :(得分:3)
您需要在url标记中使用网址名称:
{% url CommentCreator picture.id %}
就是这样,如果你在django&lt; 1.3。它仍然可以在django 1.4中使用,但它已被弃用,它在django 1.5中被完全删除。
为了以后的兼容性,如果在django&lt;上,请使用此method 1.5:
{% load url from future %}
{% url 'CommentCreator' picture.id %}
对于指定的捕获组URL,没有必要将URL params作为关键字或args传递,两者都可以工作(但知道顺序很重要,这就是为什么关键字params在URL标记中更可取的原因):
{% load url from future %}
{% url 'CommentCreator' picture.id %}
{% url 'CommentCreator' picture_id=picture.id %}
答案 1 :(得分:0)
您的网址配置使用CommentCreator视图的关键字参数,并将其提供给url
:
{% url 'CommentCreator' picture_id=picture.id %}
答案 2 :(得分:0)
您将.
代替:
放入网址
<form method = "post" action"{% url world.CommentCreator picture.id %}">
{% csrf_token %}
一定是
<form method = "post" action"{% url world:CommentCreator picture.id %}">
{% csrf_token %}