django:我如何覆盖管理站点模板

vd8tlhqk  于 2022-12-30  发布在  Go
关注(0)|答案(5)|浏览(154)

我知道这个问题已经问了很多次了,但是我基本上已经看过了所有关于堆栈溢出的文章,仍然不能让这个问题得到解决。现在我只是想简单地改变管理站点的标题。我有以下内容:

#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' %}">{{ site_header|default:_('NEW TITLE') }}</a></h1>
{% endblock %}

{% block nav-global %}{% endblock %}

我试着把这个放进去
我的站点/模板/管理员/基本站点. html,
我的站点/模板/管理员/我的应用程序/基本站点. html,以及
我的站点/我的应用程序/模板/管理员/基本站点. html,
但这些都不管用。

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',
            ],
        },
    },
]

我也试过直接修改django\contrib\admin\templates\admin\base_site.html,但仍然没有任何效果。
我现在真的很沮丧,肯定需要一些帮助,谢谢
更新:实际上我发现本地模板确实有效。x1c 0d1x
就像这里,最上面的白色条显示“#base_site.html!!@#”,这是我在my_site/templates/admin/base_site.html中偶然添加的评论。所以它可以工作,但我还是不明白为什么我不能更改网站标题。

kupeojn6

kupeojn61#

将Django应用添加到'django.contrib.admin'之上的设置-〉INSTALLED_APPS中。应用在INSTALLED_APPS中的顺序很重要。

# settings.py

...
INSTALLED_APPS = [
    "your_app.yourAppConfig", # add your app here
    "django.contrib.admin",
    "django.contrib.auth",
    "django.contrib.contenttypes",
...

使用my_site/my_app/templates/admin/base_site.html
将您的应用放在INSTALLED_APPS'django.contrib.admin'之前定义此模板的位置
source link

8qgya5xd

8qgya5xd2#

首先打开settings.py并添加模板文件夹:

TEMPLATES = [
{
    'DIRS': [
        '/path/to/your/django-project/templates', # Absolute Path
        # os.path.join(BASE_DIR, 'templates') # Relative Path
    ],
    ...

然后将文件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文档-覆盖管理站点
希望能有所帮助。

qacovj5a

qacovj5a3#

因此,您应该删除包括花括号在内的内容,只编写您想要的文本。

Remove: `{{ site_title|default:_('NEW TITLE') }}`  Write: NEW TITLE
Remove: `{{ site_header|default:_('NEW TITLE' }}`  Write: NEW TITLE

还要确保将文件夹(templates/admin)放在项目的根目录中。根目录是所有应用文件夹和www.example.com文件的容器manage.py。
换句话说,您要创建的“templates”文件夹应该与www.example.com文件处于同一级别manage.py。
文件夹结构应如下所示:

mysite/
    **templates/
        admin/
            base_site.html****manage.py**
    mysite/
        __init__.py
        settings.py
        urls.py
        wsgi.py
    ...
    ...
x6yk4ghg

x6yk4ghg4#

我不知道我是否理解正确。但你可以很容易地改变标题这样做:
在“urls.py“文件中

from django.contrib import admin

urlpatterns = [
    path('admin/', admin.site.urls),
    .......
]

admin.site.site_header = 'My New Title'
admin.site.site_title = 'My New Title'

那它应该能帮你完成任务。

ipakzgxi

ipakzgxi5#

要更改Django Admin站点标题,您可以在Django应用的admin.py中添加以下两行:

from django.contrib import admin

# change Django admin title
admin.site.site_title = 'My Blog Admin'

# change Django admin site header
admin.site.site_header = 'My Blog Admin'

相关问题