django:我该如何实际覆盖管理站点模板?
django:我该如何实际覆盖管理站点模板?
我知道这个问题已经被问过并得到解答了很多次,但我基本上浏览了 stack overflow 上的所有帖子,但仍然无法使其工作。我现在只是尝试简单地更改管理网站的标题。我有以下代码:\n
#base_site.html {% extends "admin/base_site.html" %} {% block title %}{{ title }} | {{ site_title|default:_('新标题') }}{% endblock %} {% block branding %}{{ site_header|default:_('新标题') }}
{% endblock %} {% block nav-global %}{% endblock %}
\n我尝试将其放在以下位置:\n
\nmy_site/templates/admin/base_site.html,\nmy_site/templates/admin/my_app/base_site.html 和\nmy_site/my_app/templates/admin/base_site.html,\n
\n但这些都不起作用。\n
settings.py: TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates')], 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], 'loaders': [ 'django.template.loaders.filesystem.Loader', 'django.template.loaders.app_directories.Loader', ], }, }, ]
\n我还尝试直接更改 django\\contrib\\admin\\templates\\admin\\base_site.html,但仍然没有任何变化。\n我真的很沮丧,肯定需要帮助,谢谢。\n更新:\n实际上,我发现本地模板确实起作用了。\n\n就像这样,最上面的白色条显示的是\"#base_site.html!!@#\",这是我偶然在 my_site/templates/admin/base_site.html 中加上的注释。所以它有点起作用,但我仍然不明白为什么我不能更改网站标题。
问题出现的原因是在覆盖Django管理站点模板时,语法错误导致模板无法正确渲染。解决方法是删除包括花括号在内的语法,并直接写入所需的文本。此外,还需确保将文件夹(templates/admin)放置在项目的根目录下,即与manage.py文件同级。
以下是解决问题的具体步骤:
1. 删除包括花括号在内的语法,只写入所需的文本:
Remove: `{{ site_title|default:_('NEW TITLE') }}` Write: NEW TITLE
Remove: `{{ site_header|default:_('NEW TITLE' }}` Write: NEW TITLE
2. 确保将文件夹(templates/admin)放置在项目的根目录下,与manage.py文件同级。文件夹结构应如下所示:
mysite/
templates/
admin/
base_site.html
manage.py
mysite/
__init__.py
settings.py
urls.py
wsgi.py
...
...
通过按照上述步骤进行操作,即可成功覆盖Django管理站点模板。
Django:如何实际覆盖管理网站模板?
在Django中,如果我们想要修改或定制管理网站(admin site)的模板,可以按照以下步骤操作:
第一步,打开settings.py文件,并添加一个模板文件夹路径,例如:
TEMPLATES = [ { 'DIRS': [ '/path/to/your/django-project/templates', # 绝对路径 # os.path.join(BASE_DIR, 'templates') # 相对路径 ], ...
第二步,将文件base_site.html移动到以下目录中。保持文件系统中的结构非常重要。
/path/to/your/django-project/templates/admin/base_site.html
第三步,编辑base_site.html文件的内容,例如:
{% extends "admin/base_site.html" %} {% block title %}{{ title }} | {{ site_title|default:_('NEW TITLE') }}{% endblock %} {% block branding %} <h1 id="site-name"><a href="{% url 'admin:index' %}">Your new Title</a></h1> {% endblock %} {% block nav-global %}{% endblock %}
以上就是修改管理网站模板的方法,希望对你有所帮助。