django:我该如何实际覆盖管理站点模板?

11 浏览
0 Comments

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\"enter\n就像这样,最上面的白色条显示的是\"#base_site.html!!@#\",这是我偶然在 my_site/templates/admin/base_site.html 中加上的注释。所以它有点起作用,但我仍然不明白为什么我不能更改网站标题。

0
0 Comments

问题出现的原因是在覆盖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管理站点模板。

0
0 Comments

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 %}

以上就是修改管理网站模板的方法,希望对你有所帮助。

参考链接:Django官方文档 - 覆盖管理网站模板

0
0 Comments

问题的出现原因是在Django的admin站点模板中如何进行重写。解决方法是通过将自定义的app添加到settings.py文件中的INSTALLED_APPS列表中,并确保其在'django.contrib.admin'之前。

具体解决方法如下:

1. 打开settings.py文件。

2. 在INSTALLED_APPS列表中添加自定义app,例如"your_app.yourAppConfig"。

3. 将自定义app放置在'django.contrib.admin'之前。

4. 保存并关闭文件。

这样,Django将按照指定的加载顺序加载app,并使用自定义的admin模板。

0