Django NoReverseMatch новичок - PullRequest
       11

Django NoReverseMatch новичок

0 голосов
/ 23 декабря 2011

Я пытаюсь создать страницу ответа для ветки форума. Представления форума и представления цепочек работают нормально, но у меня возникают проблемы при настройке ответа и запуске новых цепочек. Удалось создать тему и форум.

Вот мои взгляды.py:

def post(request, ptype, pk):
    """Display a post form."""
    action = reverse("webnotes.forum.views.%s" % ptype, args=[pk])
    if ptype == "new_thread":
        title = "Start New Topic"
        subject = ''
    elif ptype == "reply":
        title = "Reply"
        subject = "Re: " + Thread.objects.get(pk=pk).title

    return render_to_response("forum/post.html",add_csrf(request,subject=subject,action=action, title=title))


def new_thread(request, pk):
    """Start a new thread."""
     p = request.POST
    if p["subject"] and p["body"]:
        forum = Forum.objects.get(pk=pk)
        thread = Thread.objects.create(forum=forum,title=p["subject"],creator=request.user)
        Post.objects.create(thread=thread, title=p["subject"],body=p["body"],creator=request.user)
     return HttpResponseRedirect(reverse("webnotes.forum.views.forum", args=[pk]))


def reply(request, pk):
    """Reply to a thread."""
    p = request.POST
    if p["body"]:
        thread = Thread.objects.get(pk=pk)
        post = Post.objects.create(thread=thread,title=p["subject"],body=p["body"],creator=request.user)
    return HttpResponseRedirect(reverse("webnotes.forum.views.thread", args=[pk])+"?page=last")

Вот мой urls.py:

url(r"^post/(new_thread|reply)/(\d+)/$", "forum.views.post"),
url(r"^post/reply/(\d+)/$", "forum.views.reply"),
url(r"^post/new_thread/(\d+)/$", "forum.views.new_thread"),

Когда я иду к http://localhost:8000/post/reply/1/,, я получаю:

Обратное для 'webnotes.forum.views.reply' с аргументами (u'1 ',)' и аргументами с ключевыми словами '{}' не найдено.

Я также обнаружил, что это было в трассировке:

action = reverse("webnotes.forum.views.%s" % ptype, args=[pk])

, что соответствует views.py. Что может быть не так? Надеюсь, я дал это понять. Если потребуется какая-либо дополнительная информация, я с радостью предоставлю.

P.S. Я следую инструкциям на этом сайте: http://www.lightbird.net/dbe/forum1.html

1 Ответ

2 голосов
/ 23 декабря 2011

Ваш реверс ищет "webnotes.forum.views.thread", но ваш URLconf имеет "forum.views.new_thread".

Как правило, вы должны указать свои URL-адреса имен и использовать их в вызове для реверса.

...