【问题标题】:How to use more than one _base.html file using django-two-factor-auth?如何使用 django-two-factor-auth 使用多个 _base.html 文件?
【发布时间】:2021-03-15 11:43:04
【问题描述】:

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

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

【问题讨论】:

  • 到目前为止你尝试了什么?
  • 解决了!刚刚发布了我是如何解决它的。不知道为什么 Django-two-factor 会假设登录页面和设置/设置页面的基本样式应该相同......

标签: python django django-two-factor-auth


【解决方案1】:

在您的项目目录中,添加一个名为templates 的文件夹,与您的应用程序同级,例如users、blogs 等。在其中为two_factor 创建另一个文件夹。在这个文件夹里面,把你修改后的base.html.

如果您以某种方式收到错误消息,请在您的 settings.py 中的 TEMPLATES = [ 下。替换

'DIRS': [],

与

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

或

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

这里是Doc about templates

在操作员自己回答后更新

如果你想让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 将首先在该文件夹中查找模板。这个方法的详细应用在这里Overriding from the project’s templates directory

【讨论】:

  • 我正在尝试配置两个基本文件。一个用于登录路由,另一个用于其他两个因素路由
  • 您的解决方案有效,但并不理想。我更新了我的答案,我提到的方法正是针对这种情况。
  • 只需阅读更新后的答案。关于可维护性的非常好的观点!更新了我的代码/文件夹,一切正常,谢谢!
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-25
    • 1970-01-01
    • 2018-07-14
    • 2022-12-16
    • 2019-12-07
    • 2016-07-30
    • 2016-06-04
    • 1970-01-01
    相关资源
    最近更新 更多