Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在模板中正确获取登录视图的url?_Python_Django_Django Templates - Fatal编程技术网

Python 如何在模板中正确获取登录视图的url?

Python 如何在模板中正确获取登录视图的url?,python,django,django-templates,Python,Django,Django Templates,我在弄清楚{%url'某物“%}如何在django模板中工作时遇到了一个小问题 当我在调试模式下运行我的网站时,我在标准输出中看到: 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: Rev

我在弄清楚
{%url'某物“%}
如何在django模板中工作时遇到了一个小问题

当我在调试模式下运行我的网站时,我在标准输出中看到:

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 | 
/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>

urls.py
中,将名称添加到每个相关条目(而不是包含其他定义的条目,因为名称将被忽略)

然后在模板中使用url条目的名称,如上面定义的,即

<a href="{% url 'optional_template_namespace:entry_name' %}">The link text</a>
您应该使用url的名称,而不是它的虚线路径

在本例中,您已经包含了来自
django.contrib.auth.url
的url模式。如果查看,可以看到视图的名称是
login
logout

urlpatterns = [
    url(r'^login/$', views.login, name='login'),
    url(r'^logout/$', views.logout, name='logout'),
    ...
]
因此,请将您的链接更改为:

<a href="{% url 'logout' %}?next={% url 'login' %}">Log out</a>

看一看

您可以在使用url时引用该名称

{% url 'login' %}

或者如果您需要使用next注销,则

<a href="{% url logout %}?next=/accounts/login/">Logout</a>

看看这篇文章

在模板中使用url条目的名称(如
urls.py
中所定义),即
<a href="{% url 'logout' %}?next={% url 'login' %}">Log out</a>
url(r'^login/$', views.login, name='login'),
{% url 'login' %}
{% url 'logout' %}
<a href="{% url logout %}?next=/accounts/login/">Logout</a>