Django反向''带参数'(1,)'和关键字参数'{}'找不到

时间:2013-03-30 03:25:36

标签: django

我有一个由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 %}

3 个答案:

答案 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 %}