虚拟的Python Django模板

时间:2015-01-31 08:54:30

标签: django python-3.x django-templates

首先,我很抱歉,因为这肯定是重复的。但是,我无法在stackoverflow上找到与高级Django模板功能无关的问题。

我虔诚地追随Django tutorial。我的项目结构如下:

poll_site
  ./db.sqlite3
  ./manage.py
  ./polls
    ./admin.py
    ./__init__.py
    migrations
    models.py
    __pycache__
    tests.py
    views.py
  ./poll_site
    ./__init__.py
    ./settings.py
    ./urls.py
    ./wsgi.py
  ./templates
    ./admin
      base_site.html

settings.py的最后一行是

TEMPLATE_DIRS = (os.path.join(BASE_DIR, "templates"), )

(我已尝试TEMPLATE_DIRS = [os.path.join(BASE_DIR, "templates")]

templates/admin/base_site.html如下:

{% extends "admin/base.html" %}

{% block title %}{{ title }} | {{ site_title|default:_('Polls site admin') }}{% endblock %}

{% block branding %}
<h1 id="site-name">
    <a href="{% url 'admin:index' %}">{{site_header|default:_('Monkey') }}</a>
</h1>
{% endblock %}

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

然而,当我访问我的网站时,我明白了 Django administrator image

我做错了什么?

2 个答案:

答案 0 :(得分:2)

default过滤器只输出它的参数,然后该值为空。在您的情况下,site_titlesite_header不为空,因此default不做任何事情。

{% load i18n %}

{% block title %}{{ title }} | {% trans 'Polls site admin' %}{% endblock %}

{% block branding %}
<h1 id="site-name">
    <a href="{% url 'admin:index' %}">{% trans 'Monkey' %}</a>
</h1>
{% endblock %}

顺便说一下,您不需要覆盖管理模板来更改标题/标题。阅读文档的this section

答案 1 :(得分:0)

看起来您的模板从未首先呈现过。

模板中的翻译是使用trans和blocktrans标签完成的,而不是通过_(通常是指ugettext或其他兄弟姐妹)完成的。

我的建议是:您可以在settings.py中print TEMPLATE_DIRS查看实际路径&amp;确保它是正确的。