मैंने '' url '' टैग का उपयोग करने के उत्तरों में गूगल पर बहुत कुछ देखा है, केवल यह कहकर कि आप अपने टेम्पलेट में सम्मिलित करें और यह देखें कि आप जिस यूआरएल के लिए यूआरएल चाहते हैं, उसे प्रविष्ट करें। वैसे मेरे लिए कोई खुशी नहीं :( मैंने हर क्रमपरिवर्तन की कोशिश की है और अंतिम उपाय के रूप में यहां पोस्टिंग का सहारा लिया है।
तो यहाँ है। मेरा urls.py इस तरह दिखता है:
from django.conf.urls.defaults import *
from login.views import *
from mainapp.views import *
import settings
# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
# Example:
# (r'^weclaim/', include('weclaim.foo.urls')),
(r'^login/', login_view),
(r'^logout/', logout_view),
('^$', main_view),
# Uncomment the admin/doc line below and add 'django.contrib.admindocs'
# to INSTALLED_APPS to enable admin documentation:
# (r'^admin/doc/', include('django.contrib.admindocs.urls')),
# Uncomment the next line to enable the admin:
(r'^admin/', include(admin.site.urls)),
#(r'^static/(?P<path>.*)$', 'django.views.static.serve',{'document_root': '/home/arthur/Software/django/weclaim/templates/static'}),
(r'^static/(?P<path>.*)$', 'django.views.static.serve',{'document_root': settings.MEDIA_ROOT}),
)
मेरी 'लॉगिन' निर्देशिका में मेरा 'व्यूहोम' ऐसा दिखता है:
from django.shortcuts import render_to_response, redirect
from django.template import RequestContext
from django.contrib import auth
def login_view(request):
if request.method == 'POST':
uname = request.POST.get('username', '')
psword = request.POST.get('password', '')
user = auth.authenticate(username=uname, password=psword)
# if the user logs in and is active
if user is not None and user.is_active:
auth.login(request, user)
return render_to_response('main/main.html', {}, context_instance=RequestContext(request))
#return redirect(main_view)
else:
return render_to_response('loginpage.html', {'box_width': '402', 'login_failed': '1',}, context_instance=RequestContext(request))
else:
return render_to_response('loginpage.html', {'box_width': '400',}, context_instance=RequestContext(request))
def logout_view(request):
auth.logout(request)
return render_to_response('loginpage.html', {'box_width': '402', 'logged_out': '1',}, context_instance=RequestContext(request))
और अंत में main.html, जिस पर login_view अंक दिखता है:
<html>
<body>
test! <a href="{% url logout_view %}">logout</a>
</body>
</html>
तो मुझे हर बार 'NoReverseMatch' क्यों मिलता है?
* (थोड़े अलग नोट पर मुझे मेरे सभी रेंडर-टू-रिस्पांस के अंत में 'reference_instance = RequestContext (रिक्वेस्ट)' का उपयोग करना पड़ा क्योंकि अन्यथा यह मेरे टेम्पलेट्स में {{MEDIA_URL}} को मान्यता नहीं देता और मैं संदर्भ नहीं दे सकता था) किसी भी सीएसएस या जेएस फाइलें। मुझे यकीन नहीं है कि यह क्यों है। मुझे सही नहीं लगता है) *
context_instance=RequestContext(request)
वह सही है, इसके लिए सभी टेम्प्लेट को प्रदान किए गए संदर्भ चरों पर टेम्प्लेट का उपयोग करने की अनुमति है। यह सभी सामान्य विचारों के लिए डिफ़ॉल्ट रूप से किया जाता है, लेकिन आपको इसे अपने कस्टम लोगों में स्वयं करने की आवश्यकता है।