0

我有 django 生成的表单,我正在尝试将带有表单的对象 id 返回给函数。

我收到此错误。我似乎无法弄清楚为什么它不起作用,因为图片 id 是有效的 id,并且 URL 的正则表达式应该捕获它并将其返回给我的函数,除非当前 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()})

我的观点.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 %}
4

3 回答 3

3

您需要在 url 标签中使用 url 名称:

{% url CommentCreator picture.id %}

就是这样,如果您使用的是 django < 1.3,则不需要在 url 名称周围加上单引号。它在 django 1.4 中仍然有效,但已被弃用,并且在 django 1.5 中已完全删除。

为了将来的兼容性,如果在 django < 1.5 上,您应该使用此方法:

{% load url from future %}
{% url 'CommentCreator' picture.id %}

对于命名的捕获组 URL,不需要将 URL 参数作为关键字或参数传递,两者都可以工作(但了解顺序很重要,这就是为什么关键字参数在 URL 标记中更可取的原因):

{% load url from future %}
{% url 'CommentCreator' picture.id %}
{% url 'CommentCreator' picture_id=picture.id %}
于 2013-03-30T06:28:57.567 回答
0

您的 URL 配置使用 CommentCreator 视图的关键字参数,将它们提供给url

{% url 'CommentCreator' picture_id=picture.id %}
于 2013-03-30T03:28:21.413 回答
0

你把.而不是:放在网址中

<form method = "post" action"{% url world.CommentCreator picture.id %}">
    {% csrf_token %}

一定是

<form method = "post" action"{% url world:CommentCreator picture.id %}">
    {% csrf_token %}
于 2013-03-30T06:31:57.003 回答