gpt4 book ai didi

django - 使用 {% url ??? %} 在 Django 模板中

转载 作者:行者123 更新时间:2023-11-28 19:33:19 26 4
gpt4 key购买 nike

我在谷歌上看了很多关于如何在模板中使用“url”标签的答案,结果发现很多回复说“你只需将它插入到你的模板中,并将它指向你想要 url 的 View ”。好吧,我并不高兴 :( 我已经尝试了所有可能的排列方式,并作为最后的手段在这里发帖。

原来如此。我的 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}),
)

我的“登录”目录中的“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:

<html>
<body>
test! <a href="{% url logout_view %}">logout</a>
</body>
</html>

那么为什么我每次都得到“NoReverseMatch”?

*(略有不同的是,我必须在所有渲染到响应的末尾使用“context_instance=RequestContext(request)”,否则它无法识别我模板中的 {{ MEDIA_URL }},我无法不要引用任何 css 或 js 文件。我不确定这是为什么。对我来说似乎不正确)*

最佳答案

所选答案已过时,没有其他答案对我有用(Django 1.6 和 [显然] 没有注册的命名空间。)

对于 Django 1.5 及更高版本(来自 the docs)

WarningDon’t forget to put quotes around the function path or pattern name!

使用命名 URL,您可以:

(r'^login/', login_view, name='login'),
...
<a href="{% url 'login' %}">logout</a>

如果 View 采用另一个参数,同样简单

def login(request, extra_param):
...
<a href="{% url 'login' 'some_string_containing_relevant_data' %}">login</a>

关于django - 使用 {% url ??? %} 在 Django 模板中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4599423/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com