Zrozumienie django.shortcuts.redirect
Mam parę problemów ze zrozumieniem, jak to zrobićredirect
albo raczejreverse
naprawdę działa.
W głównym pliku urls.py mam:
from django.conf.urls import patterns, include, url
from django.views.generic.simple import redirect_to
urlpatterns = patterns('',
url(r'^i wmonitors.urls
Mam:
from django.conf.urls import patterns, include, url
urlpatterns = patterns('monitor.views',
(r'^Kiedy zadzwonisz/monitor
Chcę go przekierować/monitor/abc
więc zrobiłem:
def index(request):
return redirect("abc")
def abc(render, id=None):
return render_to_response("monitor/list.htmld", {})
Ale mamNoReverseMatch
wyjątek. Ale kiedy robię:
def index(request):
return redirect("abc/")
to nagle działa.
Nie mogę w pełni zrozumieć dlaczego. Dlaczego zrobiłreverse
nieabc
ale nie zabc/
? I jak to zrobićreverse
wiem, że przekierowanie powinno obejmowaćmonitor/
także? Co się stanie, jeśli w głównej nazwie urls.py zostanie wywołana inna aplikacjaxyz
który również maabc
widok?
, redirect_to, {'url': '/monitor/'}),
url(r'^monitor/', include('monitor.urls')),
)
i wmonitors.urls
Mam:
from django.conf.urls import patterns, include, url
urlpatterns = patterns('monitor.views',
(r'^$', 'index'),
(r'^abc/(?P<id>.*$)', 'abc'),
)
Kiedy zadzwonisz/monitor
Chcę go przekierować/monitor/abc
więc zrobiłem:
def index(request):
return redirect("abc")
def abc(render, id=None):
return render_to_response("monitor/list.htmld", {})
Ale mamNoReverseMatch
wyjątek. Ale kiedy robię:
def index(request):
return redirect("abc/")
to nagle działa.
Nie mogę w pełni zrozumieć dlaczego. Dlaczego zrobiłreverse
nieabc
ale nie zabc/
? I jak to zrobićreverse
wiem, że przekierowanie powinno obejmowaćmonitor/
także? Co się stanie, jeśli w głównej nazwie urls.py zostanie wywołana inna aplikacjaxyz
który również maabc
widok?
, 'index'),
(r'^abc/(?P<id>.*$)', 'abc'),
)
Kiedy zadzwonisz/monitor
Chcę go przekierować/monitor/abc
więc zrobiłem:
def index(request):
return redirect("abc")
def abc(render, id=None):
return render_to_response("monitor/list.htmld", {})
Ale mamNoReverseMatch
wyjątek. Ale kiedy robię:
def index(request):
return redirect("abc/")
to nagle działa.
Nie mogę w pełni zrozumieć dlaczego. Dlaczego zrobiłreverse
nieabc
ale nie zabc/
? I jak to zrobićreverse
wiem, że przekierowanie powinno obejmowaćmonitor/
także? Co się stanie, jeśli w głównej nazwie urls.py zostanie wywołana inna aplikacjaxyz
który również maabc
widok?
i wmonitors.urls
Mam:
from django.conf.urls import patterns, include, url
urlpatterns = patterns('monitor.views',
(r'^$', 'index'),
(r'^abc/(?P<id>.*$)', 'abc'),
)
Kiedy zadzwonisz/monitor
Chcę go przekierować/monitor/abc
więc zrobiłem:
def index(request):
return redirect("abc")
def abc(render, id=None):
return render_to_response("monitor/list.htmld", {})
Ale mamNoReverseMatch
wyjątek. Ale kiedy robię:
def index(request):
return redirect("abc/")
to nagle działa.
Nie mogę w pełni zrozumieć dlaczego. Dlaczego zrobiłreverse
nieabc
ale nie zabc/
? I jak to zrobićreverse
wiem, że przekierowanie powinno obejmowaćmonitor/
także? Co się stanie, jeśli w głównej nazwie urls.py zostanie wywołana inna aplikacjaxyz
który również maabc
widok?