【问题标题】:django Custom Template is not rendering for password_change_form.htmldjango 自定义模板未呈现 password_change_form.html
【发布时间】:2019-10-22 02:49:54
【问题描述】:

我有一个在网站上自定义格式的 password_change_form.html。 我用我的模板覆盖了 Django 默认模板。但是,它没有呈现我的模板。它只是呈现如下的默认模板。

我创建了一个自定义格式化模板

base.html

<div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdown">
 <a class="dropdown-item" href="{% url 'password_change' %}">Change password</a>
<div class="dropdown-divider"></div>

password_change_form.html

{% extends 'home/base.html' %}

{% block body %}
    <h2>
        Change password
    </h2>
    <form method="post">
        {% csrf_token %}
        {{ form.as_p }}
        <button type="submit" class="btn btn-primary">Change password</button>
    </form>
{% endblock %}

urls.py

from django.contrib import admin
from django.urls import path, include
from Shopping.cart import urls


urlpatterns = [
    path('', include('Shopping.cart.urls')),
    path('accounts/', include('django.contrib.auth.urls')),
    path('admin/', admin.site.urls),
]

我希望看到我的模板覆盖了 Django 默认模板

已解决 我犯了一个错误,我将模板文件夹放在应用程序中。这是造成问题的原因。现在我将我的模板文件夹移动到项目文件夹中。现在一切正常。谢谢。

【问题讨论】:

    标签: python django django-forms change-password


    【解决方案1】:

    我的解决方案是将“用户”应用指向“INSTALLED_APPS = []”中内置 django 应用的上方。

    2020 年 11 月 12 日更新:

    Python 从上到下读取代码。

    来自 Django 官方docs INSTALLED_APPS 设置:

    当多个应用程序提供相同版本的不同版本时 资源(模板、静态文件、管理命令、翻译)、 INSTALLED_APPS 中列出的第一个应用程序具有优先权。

    如果“users”应用程序位于“django.contrib.admin”下方,那么 Django 将转到“admin”应用程序并在那里找到templates/registration/password_change_form.html

    因此,“用户”应用必须在 INSTALLED_APPS 中的管理应用之​​前。

    【讨论】:

    • 在覆盖应用模板时,应用排序不正确是一个著名的“陷阱”。也许您可以在回答中解释为什么排序很重要?
    猜你喜欢
    • 2015-03-14
    • 2013-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-27
    • 2018-04-11
    • 2015-04-01
    • 1970-01-01
    相关资源
    最近更新 更多