小编Dav*_*cos的帖子

如何在django模板中重复"块"

我想在同一个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'标记不止一次出现

一个快速而肮脏的解决方案是将块标题复制到title1title2:

# blog.html
{% …
Run Code Online (Sandbox Code Playgroud)

django dry django-templates

122
推荐指数
8
解决办法
4万
查看次数

在Django 1.7中运行单元测试时禁用迁移

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.

django unit-testing django-migrations

106
推荐指数
4
解决办法
2万
查看次数

如何在Eclipse中集成pep8.py?

一点背景:

  • PEP 8Python代码样式指南.它包含所有python程序员应遵循的约定.
  • 根据PEP 8,pep8.py是一个(非常有用的)脚本,用于检查给定python脚本的代码格式.
  • Eclipse是一个很棒的IDE.使用Pydev扩展,它可以用于开发Python

我在编写脚本时手动运行pep8.py,但是对于更大的项目,我更喜欢使用Eclipse.在Eclipse/Pydev中集成pep8.py非常有用,因此它可以在项目的所有文件中自动运行,并指向包含警告的行.也许有一种明显的方法可以做到,但我还没有找到它.

问题是:如何在Eclipse中集成pep8.py?

python eclipse pep8 pydev

90
推荐指数
5
解决办法
3万
查看次数