django上的NoReverseMatch生成了视图

时间:2015-08-04 07:39:12

标签: django

我正在尝试为Django中的所有身份验证过程创建视图,但我在视图中遇到了反向url标记的问题。

我有: urls.py

url('^v1/back/', include('django.contrib.auth.urls'))

的login.html

{% extends "base.html" %}
{% load i18n %}

{% block content %}
<form method="post" action=".">
  {{ form.as_p }}

  <input type="submit" value="{% trans 'Log in' %}" />
  <input type="hidden" name="next" value="{{ next }}" />
</form>

<p>{% trans "Forgot password" %}? <a href="{% url 'django.contrib.auth.views.auth_password_reset' %}">{% trans "Reset it" %}</a>!</p>
<p>{% trans "Not member" %}? <a href="{% url 'django.contrib.auth.views.registration_register' %}">{% trans "Register" %}</a>!</p>
{% endblock %}

当我访问localhost:8000 / v1 / back / login /我有:

  

NoReverseMatch at / v1 / back / login /

     

使用反转'django.contrib.auth.views.auth_password_reset'   未找到参数'()'和关键字参数'{}'。 0个图案   尝试过:[]

事情是,你可以看到,我试着把完整的路径,它仍然不起作用。 当我尝试访问密码更改等其他视图时,会将我重定向到:

  

http://192.168.56.103:8000/accounts/login/?next=/v1/back/password_change/

这显然不起作用,当我访问密码重置时:

{% extends "base.html" %}
{% load i18n %}

{% block content %}
<form method="post" action=".">
  {{ form.as_p }}

  <input type="submit" value="{% trans 'Submit' %}" />
</form>
{% endblock %}

它具有django管理员的外观,而不是我的base.html。

我猜这里有很多问题,我正在尝试逐个解决它们,但我不知道我在网址部分做错了什么。

不知道这是否相关,但我的应用程序的一部分是由Django Rest Framework提供的,我正在努力实现oAuth2。

2 个答案:

答案 0 :(得分:3)

我认为您应该从

更改您的网址模板标记
 {% url 'django.contrib.auth.views.auth_password_reset' %} 

{% url 'password_reset' %}

可以在https://docs.djangoproject.com/en/1.8/topics/auth/default/#all-authentication-views的示例中看到。

答案 1 :(得分:2)

密码重设的正确名称仅为password_reset,以反转使用:

{% url 'password_reset' %}

要修复登录重定向,您必须调整settings.py

中的LOGIN_URL

我建议您删除有关模板的部分,并将其作为单独的问题发布。

相关问题