Django 1.8 BASE_DIR 模板问题

Posted

技术标签:

【中文标题】Django 1.8 BASE_DIR 模板问题【英文标题】:Django 1.8 BASE_DIR template issue 【发布时间】:2015-11-15 17:00:10 【问题描述】:

我是 Django 新手,遇到了一个让我很困惑的错误。我只是在整理一个基本站点并将本教程用作指南,但我遇到了有关模板的问题。我在与 manage.py 相同的目录中创建了一个模板目录,在模板中创建了一个管理目录,并按照教程在管理目录中复制/粘贴了 base_site.html。然后我更改了一些标题,保存了所有内容,重新启动了服务器,然后......什么都没有。没有错误但没有变化。就好像我什么都没做一样。我已经尝试了这里建议的各种修复,但似乎都没有。就好像找不到模板目录,所以应用程序使用默认值。以下是我目前掌握的基础知识:

目录结构:Project>App、templates>admin>base_site.html、manage.py等

在我的 settings.py 中:

import os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

TEMPLATES = [

    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': [os.path.join(BASE_DIR, 'templates')],
    'APP_DIRS': True,
    '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',
        ],
    ,
,

]

在 base_site.html 中:

<h1 id="site-name"><a href="% url 'admin:index' %"> site_header|default:_('THIS IS WHAT I CHANGED') </a></h1>

我真的希望有人可以在这里为我指明正确的方向。

【问题讨论】:

你的设置文件在App文件夹吗? Settings.py 在 app 文件夹中,而不是在项目文件夹中,是的。模板文件夹位于项目文件夹中。 顺便说一句,你的 sn-p 对我有用。使用项目的默认结构(刚刚更新的 template_dirs)。 pastebin.com/VvErAizj 这对我来说真的毫无意义。如果我在整个站点上更改 BASE_DIR 会引发错误,那么这必须是正确的。 之前有人发了一个答案,然后又删除了,但那个答案实际上是正确的。它不得不在我的大脑后部反弹了几个小时,但它终于点击了,所以无论是谁发布了有关默认值的信息,请重新发布,以便我给予你应得的荣誉。 【参考方案1】:

这一行:

 site_header|default:_('THIS IS WHAT I CHANGED')  

正在评估site_header,如果找到False,将输出默认值。 site_header 是在 AdminSite 类中定义的变量。根据您的描述,site_header 没有理由成为 False,因此将显示 site_header,而不是您更改的文本。

Default filter描述:

默认

如果 value 的计算结果为 False,则使用给定的默认值。否则,使用 价值。

例如:

value|default:"nothing" 如果 value 是 "" (空字符串),则 输出什么都没有。

这里:https://docs.djangoproject.com/en/1.8/ref/templates/builtins/#default

有一些方法可以更改site_header,您可以基于AdminClass 创建自定义模型,然后为这个新实例定义site_header。这也意味着定义一个新的 url。

或者你可以设置site_header:

django.contrib.admin.AdminSite.site_header = "新标题"

【讨论】:

我直接从官方 Django 教程中提取了它...docs.djangoproject.com/en/1.8/intro/tutorial02

以上是关于Django 1.8 BASE_DIR 模板问题的主要内容,如果未能解决你的问题,请参考以下文章

django模板中的css

在 Django 1.8 中覆盖现有的模板标记方法

DJango 1.8 在子模板上使用完全不同的 CSS

Django 1.8 UpdateView 生成 405 错误和空白模板

如何在 Django 1.8 中使用 jinja2 作为模板引擎

render_to_response 或 redirect 改变了 Django 1.8 中的模板元素