Django:渲染错误时获取NoReverseMatch

时间:2011-06-28 14:06:35

标签: python django templates parameters django-urls

我似乎得到了一个Caught NoReverseMatch错误。我不太确定导致问题的原因。看看完整的错误。

Caught NoReverseMatch while rendering: Reverse for 'mmc.views.edit_note' with arguments '(1L, '')' and keyword arguments '{}' not found.

在我的get_client页面上。我有一个编辑注释页面的链接。我假设问题可能在我的模板中。我认为note.pk是问题所在。

<a href="{% url mmc.views.edit_notes client.pk note.pk %}"> Edit Note</a>

这里还有一些可能有用的信息。 的 urls.py

(r'^clients/(?P<client_id>\d+)/$', views.get_client),
(r'^clients/notes/(?P<client_id>\d+)(?P<note_id>\d+)$', views.edit_notes),

views.py

@login_required
def edit_notes(request, client_id = 0, note_id = 0):
    client = None
    note = None
    try:
        client = models.Client.objects.get(pk = client_id)
        note = models.Note.objects.get(pk = note_id)
    except:
        return HttpResponseNotFound()

    if request.method == 'POST':
        form = forms.NoteForm(request.POST, instance=note)
        if form.is_valid():
            note = form.save(commit=False)
            note.user = request.user
            note.client = client
            note.save(True)
            request.user.message_set.create(message = "Note is successfully added.")
            return HttpResponse("<script language=\"javascript\" type=\"text/javascript\">window.opener.location = window.opener.location; window.close();</script>")
    else:
        form = forms.NoteForm(instance=note)

    return render_to_response('note_form.html', {'form':form, 'client':client, 'note':note}, context_instance = RequestContext(request))

* 编辑:* 似乎已经纠正了大部分内容以下是我所做的一些更改。

模板

{% for note in notes %}
        <a href="{% url mmc.views.edit_note client.pk note.pk  %}" onclick="return showAddAnotherPopup(this);"> Edit Note</a>
{% endfor%}

urls.py

(r'^clients/notes/(?P<client_id>\d+)/(?P<note_id>\d+)/$', views.edit_note)

现在唯一的问题是它显示了单个客户的每个编辑表单备注的所有链接。我只想要最新音符的链接和最新音符。有可能吗?

2 个答案:

答案 0 :(得分:1)

client.pknote.pk是空值,因此它们与正则表达式不匹配。

答案 1 :(得分:0)

(r'^clients/(?P<client_id>\d+)/$', views.get_client)应该是url(r'^clients/(?P<client_id>\d+)/$', views.get_client, name='MY_URL_NAME'),然后使用{% url MY_URL_NAME client.pk %}

进行调用

并从url

导入django.conf.urls.defaults