Yon*_*han 16 python django django-templates django-admin
我一直在尝试为Django工作的管理页面获取自定义模板,但一直没有成功.我已经阅读了django文档和几个博客,它们解释说这是一个简单的步骤,我认为是这样.
截至目前,管理页面工作,但我自己重写的CSS或模板不起作用.我的设置如下
/project_folder/
manage.py
settings.py
urls.py
__init__.py
/app/
views.py
models.py
__init__.py
/templates/
/admin/
base_site.html
Run Code Online (Sandbox Code Playgroud)
在urls.py我有
(r'^admin/', include(admin.site.urls)),
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为我无法登录等.所以我假设/admin/base_site.html将覆盖默认的一个,但它没有做任何事情.
有谁知道这里发生了什么?我从Django教程/指南中跟踪它,然后进入一些博客,看看他们是否有答案,但他们都说了同样的话.
编辑1:我的模板目录设置正确.
TEMPLATE_DIRS = (
os.path.join(PROJECT_PATH, 'templates/'),
)
Run Code Online (Sandbox Code Playgroud)
这可以正常工作,因为我让我的网站的其余部分使用CSS等媒体目录.唯一看似"接受"模板的是管理部分.
Yon*_*han 25
好吧我修好了,这是一个愚蠢的错误,但我在过去2个小时里已经玩过这个了.我必须在django.contrib.admin之前声明我的应用程序.它不会接受它.
M. *_*ter 20
还有一个人应该拒绝参加这项运动的错误.演习说要改变这个......
<h1 id="site-name"><a href="{% url 'admin:index' %}"> {{ site_header|default:_('Django administration') }} </a></h1>
Run Code Online (Sandbox Code Playgroud)
对...
<h1 id="site-name"><a href="{% url 'admin:index' %}">Polls Administration</a></h1>
Run Code Online (Sandbox Code Playgroud)
有一种诱惑只能改变字符串常量,但这是不正确的.即不要这样做,它不会改变标题:
<h1 id="site-name"><a href="{% url 'admin:index' %}"> {{ site_header|default:_('Polls Administration') }} </a></h1>
Run Code Online (Sandbox Code Playgroud)
这就是我犯的错误,我必须仔细检查才能修复它.
在Django教程的第二部分中执行此步骤时,我无法识别管理模板.
这就是我解决它的方式:
使用这个答案中的信息,我打印了以下值TEMPLATE_DIRS:
settings.py文件所在的目录(对我来说这是R:\jeffy\programming\sandbox\python\django\tutorial\mysite\mysite\)python>>> import settings>>> settings.TEMPLATE_DIRS,哪个输出 ['R:\\jeffy\\programming\\sandbox\\python\\django\\tutorial\\mysite\\templates']因此,这是此项目的模板目录的预期位置.管理目录进入该目录,base_site.html文件进入该目录.
其他的问题,我是,它是工作,但我只改变了<TITLE>外地,所以我只是没有注意到它.(我以为我正在改变主标题.)
我在浏览 Django 1.6.5 教程 ( https://docs.djangoproject.com/en/1.8/intro/tutorial02/ ) 时遇到了同样的问题,但意识到不仔细阅读是一个错误。本教程让你做的是把它放到你的 settings.py 中:
TEMPLATES = [
{
...
'DIRS': [os.path.join(BASE_DIR, 'templates')],
...
}
Run Code Online (Sandbox Code Playgroud)
然后,我将我想覆盖管理站点的模板文件夹放在应用程序下,就像您的示例一样:
/project_folder/
manage.py
settings.py
urls.py
__init__.py
/app/
views.py
models.py
__init__.py
/templates/
/admin/
base_site.html
Run Code Online (Sandbox Code Playgroud)
有了这个,它就不会起作用,原因类似于你在评论中提到的 Daniel Roseman 所指出的问题,我DIR正在评估project_folder/templates(正如我告诉它的那样)。然后我在教程中注意到它明确表示将templates/admin文件夹放在项目级别,而不是应用级别:
在您的项目目录(包含 manage.py 的目录)中创建一个模板目录。模板可以位于文件系统上 Django 可以访问的任何位置。(Django 以您的服务器运行的任何用户身份运行。)但是,将模板保留在项目中是一个很好的约定。
通过这样做,我有以下结构:
/project_folder/
manage.py
settings.py
urls.py
__init__.py
/templates/
/admin/
base_site.html
/app/
views.py
models.py
__init__.py
Run Code Online (Sandbox Code Playgroud)
有了这个,一切都按预期工作(我可以覆盖管理页面的默认 django 模板)。
虽然您应该能够将模板放在任何地方并配置 Django 以找到它们,但将您的主要管理模板放在项目级别似乎是有意义的,因为管理站点不是特定于应用程序的,而是可用于整个项目的。
| 归档时间: |
|
| 查看次数: |
10797 次 |
| 最近记录: |