【问题标题】:Changing django extended template to have all provided templates according to my design更改 django 扩展模板以根据我的设计提供所有模板
【发布时间】:2012-09-23 14:56:45
【问题描述】:

为了使用 django 自己提供的模板,例如忘记密码、更改密码等模板和视图功能,我制作了自己的登录模板等。但是一段时间后,我发现已经存在许多视图和模板,只需提供正确的 URL 即可使用,但唯一的问题是这些模板扩展了 django 自己的模板。所以我想知道有没有办法只设置我自己选择的扩展模板,即我网站的主模板,这样我就可以提供忘记密码或更改密码等的 URL。相关页面和 django 通过扩展我的主模板而不是 django 自己的模板来呈现模板。我不确定管理面板是否扩展了与其他页面相同的模板。

请告诉我该怎么做,也请告诉我这样做是否有任何问题。

更多细节:

我知道继承和扩展我们的模板文件,但我如何设置我自己的模板,让它们自动继承我的模板。 例如,对于忘记密码,我必须制作一个模板文件并需要粘贴表单元素,并在其顶部写 {%extends main.html%} 但我不希望这样,我知道默认的忘记密码模板是从一些默认的 django 继承的我想设置一些模板,以便在这种情况下它总是从我的模板继承。

【问题讨论】:

    标签: django django-templates django-1.4


    【解决方案1】:

    简短回答:您必须编写自己的模板。

    更长的答案:

    Django 确实包含一些模板,但这些模板都是专门用于管理应用程序的。 auth 视图默认使用“registration/some_template.html”,这些模板都存在于管理应用程序中(参见https://github.com/django/django/tree/master/django/contrib/admin/templates/registration)。 auth 视图都支持您可以在 URLConf 中提供的 template 关键字参数,以便您可以指定要使用自己的模板。

    将管理模板视为您在编写自己的模板时可以使用的参考,而不是您打算直接使用的东西。

    【讨论】:

    • 当我点击 localhost:8000/accounts 时,它会显示可能的 URls,例如 ` ^accounts/ ^logout/$ [name='logout'] ^accounts/ ^password_change/$ [name='password_change' ] ^accounts/ ^password_change/done/$ [name='password_change_done'] `我说的是这些模板,它们似乎不是管理模板,但它们是从我认为 django 的默认模板继承而来的。所以这就是我想知道的,你说的是相同的还是不同的?
    • 从这里开始的文档:docs.djangoproject.com/en/1.4/topics/auth/… 描述了您需要提供哪些模板,以及哪些上下文变量将传递给这些模板。没有任何“默认”模板。
    • 谢谢 Chris,我现在从 django admin/registration 获得了这些模板文件,并根据我的要求将它们复制到我的项目中。谢谢你的回答,帮助我理解了。
    【解决方案2】:

    尝试了解模板继承。我认为您可以使用模板继承来实现您想要的。 This 是介绍主题的好帖子。

    【讨论】:

    • 我知道继承和扩展我们的模板文件,但是我如何设置我自己的模板,让它们自动继承我的模板,例如,忘记密码,我必须制作一个模板文件并且需要在其中粘贴表单元素并在其顶部我写 {%extends main.html%} 但我不希望我知道默认的忘记密码模板是从一些默认的 django 模板继承的我想将它设置为它总是从我的在这种情况下是模板。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-27
    • 2010-11-27
    • 1970-01-01
    • 2011-06-15
    • 2018-03-20
    • 2016-02-23
    相关资源
    最近更新 更多