Понимание django.shortcuts.redirect
У меня есть пара проблем с пониманием того, какredirect
или скорееreverse
действительно работает.
В основном urls.py у меня есть:
from django.conf.urls import patterns, include, url
from django.views.generic.simple import redirect_to
urlpatterns = patterns('',
url(r'^
И вmonitors.urls
Я имею:
from django.conf.urls import patterns, include, url
urlpatterns = patterns('monitor.views',
(r'^
Когда вы звоните/monitor
Я хочу перенаправить его на/monitor/abc
так я и сделал:
def index(request):
return redirect("abc")
def abc(render, id=None):
return render_to_response("monitor/list.htmld", {})
Но я получилNoReverseMatch
исключение. Но, когда я делаю:
def index(request):
return redirect("abc/")
тогда это вдруг работает.
Я не могу полностью понять, почему. Почему сделалreverse
потерпеть неудачу сabc
но не сabc/
? И какreverse
знать, что перенаправление должно включатьmonitor/
также? Что делать, если у меня в основном urls.py другое приложение под названиемxyz
который также имеетabc
Посмотреть?
, redirect_to, {'url': '/monitor/'}),
url(r'^monitor/', include('monitor.urls')),
)
И вmonitors.urls
Я имею:
from django.conf.urls import patterns, include, url
urlpatterns = patterns('monitor.views',
(r'^$', 'index'),
(r'^abc/(?P<id>.*$)', 'abc'),
)
Когда вы звоните/monitor
Я хочу перенаправить его на/monitor/abc
так я и сделал:
def index(request):
return redirect("abc")
def abc(render, id=None):
return render_to_response("monitor/list.htmld", {})
Но я получилNoReverseMatch
исключение. Но, когда я делаю:
def index(request):
return redirect("abc/")
тогда это вдруг работает.
Я не могу полностью понять, почему. Почему сделалreverse
потерпеть неудачу сabc
но не сabc/
? И какreverse
знать, что перенаправление должно включатьmonitor/
также? Что делать, если у меня в основном urls.py другое приложение под названиемxyz
который также имеетabc
Посмотреть?
, 'index'),
(r'^abc/(?P<id>.*$)', 'abc'),
)
Когда вы звоните/monitor
Я хочу перенаправить его на/monitor/abc
так я и сделал:
def index(request):
return redirect("abc")
def abc(render, id=None):
return render_to_response("monitor/list.htmld", {})
Но я получилNoReverseMatch
исключение. Но, когда я делаю:
def index(request):
return redirect("abc/")
тогда это вдруг работает.
Я не могу полностью понять, почему. Почему сделалreverse
потерпеть неудачу сabc
но не сabc/
? И какreverse
знать, что перенаправление должно включатьmonitor/
также? Что делать, если у меня в основном urls.py другое приложение под названиемxyz
который также имеетabc
Посмотреть?
И вmonitors.urls
Я имею:
from django.conf.urls import patterns, include, url
urlpatterns = patterns('monitor.views',
(r'^$', 'index'),
(r'^abc/(?P<id>.*$)', 'abc'),
)
Когда вы звоните/monitor
Я хочу перенаправить его на/monitor/abc
так я и сделал:
def index(request):
return redirect("abc")
def abc(render, id=None):
return render_to_response("monitor/list.htmld", {})
Но я получилNoReverseMatch
исключение. Но, когда я делаю:
def index(request):
return redirect("abc/")
тогда это вдруг работает.
Я не могу полностью понять, почему. Почему сделалreverse
потерпеть неудачу сabc
но не сabc/
? И какreverse
знать, что перенаправление должно включатьmonitor/
также? Что делать, если у меня в основном urls.py другое приложение под названиемxyz
который также имеетabc
Посмотреть?