Django - шаблон не обнаружен - PullRequest
0 голосов
/ 17 марта 2019

Я использую эту библиотеку для обработки двухфакторной аутентификации для проекта django, но у меня возникли некоторые проблемы: на моем сайте я добавил страницу setup.html, я установил URL в моем 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 , который находится в папке моего проекта ( путь папка проекта> шаблоны> 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 %}

Похоже, что модуль, который я использую, вместо загрузки MY 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 Ответ

1 голос
/ 17 марта 2019

Представление TwoFactorSetup использует шаблон setup.html в папке allauth_2fa .Поэтому все, что вам нужно сделать, это поместить ваш 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'
...