You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django是如何找到我自定义的registration/login.html模板文件的?

Django查找自定义login.html模板的逻辑

Django的模板加载机制遵循固定的优先级规则,你的自定义模板能被正确加载,原因如下:

  1. 首先,Django 内置的 LoginView 视图默认指定的渲染模板路径就是 registration/login.html,当路由匹配到这个视图时,就会按照这个路径去查找模板文件。
  2. Django 模板查找优先级从上到下依次为:
  • 首先检索 settings.py 中 TEMPLATES 配置项的 DIRS 列表里定义的所有目录,按列表顺序查找对应路径的模板,找到就直接返回。
  • 如果 DIRS 中没有找到对应模板,且 TEMPLATES 配置里 APP_DIRS 被设置为 True(默认值就是True),Django 会按照 INSTALLED_APPS 列表中应用的注册顺序,依次到每个应用下的 templates 目录里查找对应路径的模板,先匹配到的模板会被优先使用。
  1. 对应你的场景:
    你的自定义模板存放在 homepage 应用下的 templates/registration/login.html 路径,只要你在 INSTALLED_APPS 中把 homepage 应用的注册顺序放在 django.contrib.auth 前面,Django 遍历应用模板目录时,就会先找到你编写的这个 login.html,直接使用而不会继续查找 django.contrib.auth 自带的同名模板。

注意:即使视图是来自其他内置应用,只要模板路径匹配,Django 都会按照上述优先级规则查找模板,和视图所属的应用没有关系。

内容的提问来源于stack exchange,提问作者helloworld

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 04:06:08