【问题标题】:Django 1.8 BASE_DIR template issueDjango 1.8 BASE_DIR 模板问题
【发布时间】: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 会引发错误,那么这必须是正确的。
  • 之前有人发了一个答案,然后又删除了,但那个答案实际上是正确的。它不得不在我的大脑后部反弹了几个小时,但它终于点击了,所以无论是谁发布了有关默认值的信息,请重新发布,以便我给予你应得的荣誉。

标签: python django templates django-admin


【解决方案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 = "新标题"

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2010-11-16
  • 2012-01-26
  • 2012-05-14
  • 1970-01-01
  • 2016-02-26
  • 2015-11-07
  • 2017-05-31
  • 2015-06-19
相关资源
最近更新 更多