でdjango.shortcuts.redirectを理解するreverseとについてのスレッドを開始しましたredirect_to。
reverse最初のパラメーターが文字列の場合、どのように機能するかを理解するのにまだ問題があります。https://docs.djangoproject.com/en/1.4/topics/http/shortcuts/#django.shortcuts.redirectを何度も読み、対応する部分をreverse. しかし、私はまだNoReverseMatch例外を受けています。
私のROOT_URLCONF中で私は持っています
urlpatterns = patterns('',
url(r'^$', redirect_to, {'url': '/monitor/'}),
url(r'^monitor/', include('monitor.urls')),
)
私monitor.urlsが持っている
urlpatterns = patterns('monitor.views',
(r'^$', 'index'),
(r'^list', 'listall'),
)
で、monitor.urls両方の関数のコードを定義indexしましlistallた。次listallの行を追加しました。
def listall(request):
<more code goes here>
print "reversing 1 index: %s " % reverse(index)
print "reversing 2 index: %s " % reverse('index')
render_to_response("monitor/list.htmld", params)
localhost:3000/monitor/list にアクセスすると、
reversing 1 index: /monitor/
2番目reverseは例外を発生させます。なんで?私は何が欠けていますか?
私はそれをdjangosコードdjango.core.urlresolvers.callableとdjango.core.urlresolvers.get_mod_func. get_mod_func「ab」のようなものを期待しているようです。callableそのため、最初の行で「index」が返されましfunc_nameたが、の場合は空の文字列が返されましmod_nameた。2行目を次のように変更しました
print "reversing 2 index: %s " % reverse('monitor.views.index')
そしてそれは意図したとおりに機能しました。reverseでは、完全なモジュール名と関数名 (文字列を使用する場合) を使用して呼び出す必要があるのに、ドキュメントではそうではないのはなぜですか? 私は何が欠けていますか?
ありがとう