Django-未检测到模板

时间:2019-03-17 16:20:58

标签: python django django-views django-urls two-factor-authentication

我正在使用this library处理Django项目的两个因素验证,但遇到了一些麻烦:在我的网站上,我添加了一个 setup.html 页面,在我的 urls.py 文件上设置网址,但我一直收到此错误:

In template C:\Users\Us\lib\site-packages\allauth\templates\base.html, error at line 26
    Reverse for 'account_email' not found. 'account_email' is not a valid view function or pattern name.
    <li><a href="{% url 'account_email' %}">Change E-mail</a></li>

这完全奇怪,因为我不是要加载名为 base.html 的文件,而是我自己的 setup.html 文件,该文件位于项目的文件夹中(路径为 project-folder> templates> setup.html )。这是我要从自己的模板加载的 setup.html

{% extends 'main/header.html' %}
{% load i18n %}

{% block content %}
<h1>
  {% trans "Setup Two-Factor Authentication" %}
</h1>

<h4>
  {% trans 'Step 1' %}:
</h4>

<p>
  {% trans 'Scan the QR code below with a token generator of your choice (for instance Google Authenticator).' %}
</p>

<img src="{{ qr_code_url }}" />

<h4>
  {% trans 'Step 2' %}:
</h4>

<p>
  {% trans 'Input a token generated by the app:' %}
</p>

<form method="post">
  {% csrf_token %}
  {{ form.non_field_errors }}
  {{ form.token.label }}: {{ form.token }}

  <button type="submit">
    {% trans 'Verify' %}
  </button>
</form>
{% endblock %}

看起来我正在使用的模块代替加载我的 setup.html 会加载其他内容,但是我找不到解决此问题的方法。

这是我正在调用以处理设置的视图(它是模块的视图): https://github.com/percipient/django-allauth-2fa/blob/master/allauth_2fa/views.py

这是我自己的 urls.py ,其中提到了我提到的视图:

from django.urls import path
from . import views
from django.conf.urls import url, include

from django.conf.urls import url

from allauth_2fa import views as allauth_2fa_views
app_name = "main"

urlpatterns = [

    path("setup/", allauth_2fa_views.TwoFactorSetup.as_view(), name="setup"),

    path("", views.homepage, name="homepage"),
    path("register/", views.register, name="register"),
    path("logout/", views.logout_request, name="logout"),
    path("login/", views.login_request, name="login"),

]

1 个答案:

答案 0 :(得分:1)

TwoFactorSetup视图正在文件夹 allauth_2fa 中使用模板 setup.html 。因此,您所需要做的就是将 setup.html 放在具有相同名称的文件夹中: app_folder / templates / allauth_2fa / setup.html 来覆盖它。

或者,将TwoFactorSetup子类化,只需更改template_name属性以指向您的模板,然后在您的 urls.py 中使用该视图:

from allauth_2fa.views import TwoFactorSetup

class MySetup(TwoFactorSetup):
    template_name = 'my_app/setup.html'