我想在同一个django模板中使用相同的{%block%}两次.我希望此块在我的基本模板中出现多次:
# base.html
<html>
<head>
<title>{% block title %}My Cool Website{% endblock %}</title>
</head>
<body>
<h1>{% block title %}My Cool Website{% endblock %}</h1>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
然后扩展它:
# blog.html
{% extends 'base.html' %}
{% block title %}My Blog{% endblock %}
# pictures.html
{% extends 'base.html' %}
{% block title %}My Pictures{% endblock %}
# cats.html
{% extends 'base.html' %}
{% block title %}My Cats{% endblock %}
Run Code Online (Sandbox Code Playgroud)
我会得到一个例外,因为Django希望块只出现一次:
在/的TemplateSyntaxError
名称为"title"的'block'标记不止一次出现
一个快速而肮脏的解决方案是将块标题复制到title1和title2:
# blog.html
{% …
Run Code Online (Sandbox Code Playgroud) Django 1.7引入了数据库迁移.
在Django 1.7中运行单元测试时,它会强制迁移,这需要很长时间.所以我想跳过django迁移,并在最终状态下创建数据库.
我知道忽略迁移可能是一种不好的做法,因为代码的那部分将不会被测试.但事实并非如此:我正在CI测试服务器(jenkins)中运行完整的迁移.我只想跳过本地测试中的迁移,速度很重要.
一些背景:
直到Django 1.6,当使用South时,我使用了SOUTH_TESTS_MIGRATE设置:
默认情况下,如果South的syncdb命令以非交互模式运行(包括运行测试时),它还将应用迁移 - 每次运行测试时它都会运行每次迁移.
如果您希望测试运行器使用syncdb而不是迁移 - 例如,如果您的迁移需要太长时间才能应用 - 只需在settings.py中设置SOUTH_TESTS_MIGRATE = False即可.
但是,syncdb不再存在,现在它正在迁移.
从Django 1.8我将使用--keepdb参数:
--keepdb选项可用于在测试运行之间保留测试数据库.这样做的优点是可以跳过create和destroy操作,这大大减少了运行测试的时间,特别是在大型测试套件中.如果测试数据库不存在,它将在第一次运行时创建,然后为每次后续运行保留.在运行测试套件之前,任何未应用的迁移也将应用于测试数据库.
所以这个问题仅限于Django 1.7.