Cra*_*Man 5 python django django-templates
我有一个小问题,弄清楚如何{% url 'something' %}在django模板中工作.
当我在调试模式下运行我的网站时,我在stdout中看到了这个:
web_1 | [21/Dec/2015 11:29:45] "GET /accounts/profile HTTP/1.1" 302 0
web_1 | /usr/local/lib/python3.5/site-packages/django/template/defaulttags.py:499: RemovedInDjango110Warning: Reversing by dotted path is deprecated (django.contrib.auth.views.login).
web_1 | url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app)
web_1 |
Run Code Online (Sandbox Code Playgroud)
/ accounts/profile映射到模板,此模板中唯一提及django.contrib.auth.views.login的位置如下:
<a href="{% url 'django.contrib.auth.views.logout' %}?next={% url 'django.contrib.auth.views.login' %}">Log out</a>
Run Code Online (Sandbox Code Playgroud)
所以,我想由于某种原因,这不是使用{%url%}命令的正确方法.什么是正确的方法?如何摆脱这种警告?
这是我的urlpatterns:
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^accounts/', include('django.contrib.auth.urls')),
url(r'^accounts/profile', views.profile_view),
url(r'^$', RedirectView.as_view(url=reverse_lazy(views.profile_view)))
]
Run Code Online (Sandbox Code Playgroud)
您应该使用网址的名称,而不是其虚线路径.
在这种情况下,您已包含来自的网址模式django.contrib.auth.urls.如果查看该url文件,可以看到视图的名称是login和logout.
urlpatterns = [
url(r'^login/$', views.login, name='login'),
url(r'^logout/$', views.logout, name='logout'),
...
]
Run Code Online (Sandbox Code Playgroud)
因此,请将您的链接更改为:
<a href="{% url 'logout' %}?next={% url 'login' %}">Log out</a>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2964 次 |
| 最近记录: |