首先,我很抱歉,因为这肯定是重复的。但是,我无法在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 %}
然而,当我访问我的网站时,我明白了
我做错了什么?
答案 0 :(得分:2)
default
过滤器只输出它的参数,然后该值为空。在您的情况下,site_title
和site_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;确保它是正确的。