0

Django-two-factor-auth 库需要一个 _base.html 文件来自定义样式以进行集成。

我需要我的登录页面的基础与其他两个因素页面的基础不同。如何使用两个不同的 _base.html 文件,而不是对所有两个因素 url 使用相同的 _base.html?

4

2 回答 2

1

在您的项目目录中,添加一个名为 的文件夹templates,与您的应用程序处于同一级别,例如usersblogs等。在其中,为two_factor. 在这个文件夹里面,把你修改过的base.html.

如果您以某种方式收到错误消息,请在您settings.pyTEMPLATES = [. 代替

'DIRS': [],

'DIRS': [os.path.join(BASE_DIR, 'templates')], # in django2

或者

'DIRS': [BASE_DIR.joinpath('templates')],# in django3

这是关于模板的文档

在操作自己的答案后更新

如果你想two_factor/templates/two_factor/core/login.html使用自己的base.html,你应该按照我上面提到的,你会拥有的templates/two_factor/core/login.html。请注意,templates它与您的其他apps. 在templates文件夹中,生成two_factor文件夹,然后在其中,生成core文件夹,然后在该生成文件夹中login.html。您现在可以随意修改它。

您想要覆盖但不更改包目录中的内容的原因是因为当您更新包时,您必须手动再次进行更改。

上述方法有效的原因是因为我们'DIRS': [os.path.join(BASE_DIR, 'templates')]输入了设置,Django 将首先在该文件夹中查找模板。该方法的详细应用在这里从项目的模板目录中重写

于 2020-12-03T21:25:32.457 回答
0

two_factor/templates/two_factor/core/login.html我可以通过手动将引用文件的包目录中的以下行更改_base.html为我的登录页面的基本模板来解决这个问题。

{% extends "two_factor/_base_focus.html" %}

然后我继续使用_base.html自定义其他两个因素页面。

于 2020-12-04T00:58:16.770 回答