2017-10-30 8 views
0

Helo jeder, ich habe zwei Ansichten, aber ich kann nicht umleiten, um aus einer anderen Ansicht anzuzeigen. Bevor ich diese Frage stellte, versuchte ich einige Lösungen von stackoverflow, aber sie brachten kein Ergebnis. Bitte helfen Sie.Redirect zur Ansicht von einer anderen Ansicht NoReverseMatch Fehler django

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'), 
] 

Vielen Dank im Voraus!

Antwort

0

Ihr Anruf an redirect sieht so aus, als ob es den Namen einer Funktion und nicht den Namen einer benannten Ansicht verwendet. Wir müssten deine urls.py sicher sehen.

Denken Sie daran, redirect verwendet reverse unter der Haube - Sie müssen den gleichen Namen, den Sie in Ihren URL-Muster verwenden, sowie alle notwendigen Namespace liefern. Wenn Sie Ihre vorhandenen urls.py-Dateien posten können, kann ich versuchen, konkretere Informationen zur Behebung des Problems bereitzustellen. In der Zwischenzeit überprüfen Sie die Beispiele zur Verwendung redirect hier: https://docs.djangoproject.com/en/1.11/topics/http/shortcuts/#examples

+0

so habe ich geschrieben urls.py. Bitte sagen Sie mir, was ich tun muss) – beka

+0

Sie versuchen, zu einer Ansicht namens 'chat' umzuleiten, aber in Ihrer' urls.py' haben Sie die Ansicht 'room' benannt. Die Umleitung zu "room" sollte gut funktionieren. Denken Sie daran, bei Bedarf den Namespace einzubeziehen (wenn dies beispielsweise in einer App namens "chatapp" der Fall ist, müssen Sie möglicherweise zu chatapp: room umleiten). – souldeux

+0

als Name meiner App ist Chat ich versuchte Chat: Zimmer und jetzt funktioniert es)))) danke – beka

0

Sie sollten Ihre URL conf in der Frage zeigen, die Umleitung ist durch benannte URLs, nicht Funktionsnamen.

Ihre URL conf sollte:

from .views import chat 

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