【问题标题】:Django 1.8.1 Templates in Settings.pySettings.py 中的 Django 1.8.1 模板
【发布时间】:2015-07-23 18:56:03
【问题描述】:

我已经坚持了一段时间了。我正在关注 1.8 Django tutorial,我无法让 Django 呈现我编辑的模板。相反,它们呈现 Djano 库中的默认模板。请参阅官方教程(上面的链接)中标题为“自定义管理员外观”的部分。

网站结构

  • 测试站点
    • 民意调查
    • 模板
      • 管理员
        • base_site.html
    • 测试站点

Settings.py

​​>

所有行都与教程中的一样。这是他们建议编辑的行(像这样)

'DIRS': [os.path.join(BASE_DIR, 'templates')],

其他一切都与教程中的一样。我想我一定是目录结构混乱了,这就是为什么django无法拾取编辑好的模板。

【问题讨论】:

  • 你把你的 settings.py 文件放在哪里了?
  • 你可以删除或重命名 \django\contrib\admin\templates\admin\base.html 以查看 django 搜索的位置吗?
  • 我也遇到了同样的问题...

标签: django templates


【解决方案1】:

我也有同样的问题。 (Django 1.8 教程)。 然后,在settings.py中,在BASE_DIR定义之后,添加了打印语句。

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

在命令行中,我输入:

python manage.py runserver

看看什么值有BASE_DIR。原来 BASE_DIR 显示到比 polls 高一个文件夹。

然后,我将 settings.py 中的 TEMPLATES 定义更改如下:

TEMPLATES = [
{
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': [os.path.join(BASE_DIR, 'polls', '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',
        ],
    },
},

]

它奏效了。

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,结果证明我没有替换模板中的正确部分。我通过查看these IRC logs 发现了这一点。因为我不是唯一犯这个错误的人,也许你也在这样做:-)

    这是base_site.html的原始内容

    {% extends "admin/base.html" %}
    
    {% block title %}{{ title }} | {{ site_title|default:_('Django site admin') }}{% endblock %}
    
    {% block branding %}
    <h1 id="site-name"><a href="{% url 'admin:index' %}">{{ site_header|default:_('Django administration') }}</a></h1>
    {% endblock %}
    
    {% block nav-global %}{% endblock %}
    

    我只是替换了字符串“Django 管理,所以它看起来像这样:

    {% extends "admin/base.html" %}
    
    {% block title %}{{ title }} | {{ site_title|default:_('Django site admin') }}{% endblock %}
    
    {% block branding %}
    <h1 id="site-name"><a href="{% url 'admin:index' %}">{{ site_header|default:_('Polls Administration') }}</a></h1>
    {% endblock %}
    

    原来你需要替换&lt;a&gt;-tag的全部内容:

    {% extends "admin/base.html" %}
    
    {% block title %}{{ title }} | {{ site_title|default:_('Django site admin') }}{% endblock %}
    
    {% block branding %}
    <h1 id="site-name"><a href="{% url 'admin:index' %}">Polls administration</a></h1>
    {% endblock %}
    
    {% block nav-global %}{% endblock %}
    

    我希望这也能解决你的问题。

    【讨论】:

      【解决方案3】:

      我在 Django 1.11 教程中遇到了同样的问题,直到我意识到 /templates 需要与 /polls 和 /mysite 处于同一级别。你确定你的网站结构是你说的那样吗?它应该是这样的:

      mysite/
          manage.py
          mysite/
              __init__.py
              settings.py
              urls.py
              wsgi.py
          polls/
              __init__.py
              admin.py
              migrations/
                  __init__.py
                  0001_initial.py
              models.py
              static/
                  polls/
                      images/
                          background.gif
                      style.css
              templates/
                  polls/
                      detail.html
                      index.html
                      results.html
              tests.py
              urls.py
              views.py
          templates/
              admin/
                  base_site.html
      

      如果这不起作用,您是否尝试过更改 settings.py 中的 BASE_DIR?你可能是一个水平的。修改为:

      TEMPLATES = [
      {
          'BACKEND': 'django.template.backends.django.DjangoTemplates',
          'DIRS': [os.path.join(BASE_DIR, 'mysite', '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',
              ],
          },
      },
      ]
      

      【讨论】:

        猜你喜欢
        • 2012-08-23
        • 2018-02-04
        • 1970-01-01
        • 2016-08-20
        • 2012-09-27
        • 1970-01-01
        相关资源
        最近更新 更多