私は真新しいDjangoプロジェクトを持っています。に最小限のビュー関数を 1 つ追加しviews.py
、URL パターンを 1つ追加urls.py
して、文字列ではなく関数参照でビューを渡します。
# urls.py
# -------
# coding=utf-8
from django.conf.urls.defaults import *
from myapp import views
urlpatterns = patterns('',
url(r'^myview/$', views.myview),
)
# views.py
----------
# coding=utf-8
from django.http import HttpResponse
def myview(request):
return HttpResponse('MYVIEW LOL', content_type="text/plain")
reverse()
関数参照を渡すことで、URL を取得するために使用しようとしています。しかし、reverse に渡したビュー関数が、URL パターンに入れたビュー関数とまったく同じであることを確認したにもかかわらず、一致が得られません。
>>> from django.core.urlresolvers import reverse
>>> import urls
>>> from myapp import views
>>> urls.urlpatterns[0].callback is views.myview
True
>>> reverse(views.myview)
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/Library/Python/2.5/site-packages/django/core/urlresolvers.py", line 254, in reverse
*args, **kwargs)))
File "/Library/Python/2.5/site-packages/django/core/urlresolvers.py", line 243, in reverse
"arguments '%s' not found." % (lookup_view, args, kwargs))
NoReverseMatch: Reverse for '<function myview at 0x6fe6b0>' with arguments '()' and keyword arguments '{}' not found.
ドキュメントからわかる限り、関数参照は URL パターンとreverse()
.
Django トランク、リビジョン 9092 を使用しています。