Mam zupełnie nowy projekt Django. Dodałem jedną minimalną funkcję widoku do views.py
i jeden wzorzec adresu URL do urls.py
, przechodząc na stanowisku poprzez odniesienie funkcji zamiast napisu:Jak pomyślnie przekazać odwołanie do funkcji do funkcji reverse() Django?
# 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")
Próbuję użyć reverse()
aby uzyskać adres URL, przekazując to odwołanie do funkcji. Ale ja nie dostaję mecz, mimo potwierdzający, że funkcja widok olewam odwrócić jest dokładnie taka sama funkcja widok umieścić w strukturze 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.
O ile mogę powiedzieć z dokumentacją , odwołania do funkcji powinny być w porządku zarówno w wzorcu adresu URL, jak i reverse()
.
Używam bagażnik Django, wersja 9092.
Dobre pytanie. Ach, to samo, bez zmian. –
Tak, działa dobrze, jeśli przełączam z odwołań funkcji, aby wyświetlić ciągi znaków w adresie URL conf i 'reverse'. Ale jestem trochę wybredny, staram się tego nie robić :) urls.py to root conf conf. To świeży projekt Django; Edytowałem tylko /urls.py i /myapp/views.py. –
Powiedziawszy to, wydaje mi się, że mogę opuścić mój urlconf za pomocą odwołań funkcji, jeśli przekażę w pełni kwalifikowany ciąg do odwrócenia, to jest odwróć ("myproj.myapp.views.myview"). To chyba wystarczająco dobrze. Może zobaczę otwarcie biletu. –