在Django模板中使用{% url ??? %}
在Django模板中使用{% url ??? %}
我在谷歌上查了很多关于如何在模板中使用"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.*)$', 'django.views.static.serve',{'document_root': '/home/arthur/Software/django/weclaim/templates/static'}), (r'^static/(?P .*)$', 'django.views.static.serve',{'document_root': settings.MEDIA_ROOT}), )
我的'login'目录中的'views.py'文件内容如下:
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))
最后,login_view指向的main.html文件内容如下:
test! logout
那么为什么我每次都会得到'NoReverseMatch'的错误?
(稍微说一下,我不得不在所有的render_to_response末尾使用'context_instance=RequestContext(request)',因为否则它无法识别我的模板中的{{ MEDIA_URL }},我无法引用任何css或js文件。我对此不太确定为什么。这对我来说似乎不对。)