Понимание 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 Посмотреть?

, 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 Посмотреть?

Ответы на вопрос(1)

Ваш ответ на вопрос