मुझे एक नया Django प्रोजेक्ट मिला है। मैं views.py
करने के लिए एक न्यूनतम दृश्य समारोह, और urls.py
लिए एक URL पैटर्न जोड़ दिया है, एक स्ट्रिंग के बजाय समारोह संदर्भ द्वारा दृश्य गुजर:मैं 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")
मैं, reverse()
उपयोग करने के लिए URL प्राप्त करने के कोशिश कर रहा हूँ पारित करके यह एक समारोह संदर्भ है। लेकिन मैं एक मैच नहीं मिल रहा है, इस बात की पुष्टि दृश्य समारोह मैं उल्टा करने के लिए गुजर रहा हूँ ठीक उसी दृश्य समारोह मैं 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.
के रूप में मैं प्रलेखन से बता सकते हैं , यूआरएल पैटर्न और reverse()
दोनों में फ़ंक्शन संदर्भ ठीक होना चाहिए।
मैं Django ट्रंक उपयोग कर रहा हूँ, संशोधन 9092.
अच्छा सवाल। आह, वही बात, कोई बदलाव नहीं। –
हाँ, अगर मैं यूआरएल conf और 'रिवर्स' में नाम स्ट्रिंग देखने के लिए फ़ंक्शन संदर्भों से स्विच करता हूं तो यह ठीक काम करता है। लेकिन मैं थोड़ा उग्र हो रहा हूं, ऐसा करने की कोशिश नहीं कर रहा हूं :) urls.py रूट यूआरएल conf है। यह एक ताजा Django परियोजना है; मैंने केवल /urls.py और /myapp/views.py संपादित किया है। –
ऐसा कहकर, ऐसा लगता है कि मैं फ़ंक्शन संदर्भों का उपयोग करके अपना urlconf छोड़ सकता हूं, अगर मैं रिवर्स करने के लिए पूरी तरह से योग्य स्ट्रिंग पास करता हूं, यानी रिवर्स ('myproj.myapp.views.myview')। यह शायद काफी अच्छा है। हालांकि टिकट खोलने के बारे में देख सकते हैं। –