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 1.8 UpdateView 生成 405 错误和空白模板