重定向到从另一个视图查看NoReverseMatch错误django

时间:2017-10-30 00:36:06

标签: python django

Helo everyone,我有两个视图但我无法重定向到另一个视图查看。 在提出这个问题之前,我尝试了一些来自stackoverflow的解决方案,但是他们没有带来任何结果。请帮忙。

VIEWS.py

def new_room(request):
    new_room = None
    while not new_room:
        with transaction.atomic():
            label = haikunator.haikunate()
            if Room.objects.filter(label=label).exists():
                continue
            new_room = Room.objects.create(label=label)
    return redirect('chat', label=label)

def chat(request, label):
   room, created = Room.objects.get_or_create(label=label)
   messages = reversed(room.messages.order_by('-timestamp')[:50])

   return render(request, "chat/room.html", {
       'room': room,
       'messages': messages,
   })

URLS.PY

from django.conf.urls import include, url
from . import views

urlpatterns = [
    url(r'^new/$', views.new_room, name='new_room'),
    url(r'^(?P<label>[\w-]{,50})/$', views.chat, name='room'),
]

提前致谢!

2 个答案:

答案 0 :(得分:0)

您对redirect的调用看起来像是使用了函数的名称而不是命名视图的名称。我们需要确定你的urls.py。

请记住,redirect使用reverse - 您需要提供您在网址模式中使用的相同名称,以及任何必要的命名空间。如果您可以发布现有的urls.py文件,我可以尝试提供有关如何解决问题的更具体信息。在此期间,请查看有关如何使用redirect的示例:https://docs.djangoproject.com/en/1.11/topics/http/shortcuts/#examples

答案 1 :(得分:0)

你应该在问题中显示你的url conf,重定向是通过命名的url,而不是函数名。

你的网址应该有:

from .views import chat

url(r'^chat/$', chat, name='chat')