Django的构建配方

djangorecipe的Python项目详细描述


djangoRecipe:使用buildout轻松安装django

使用djangoRecipe,您可以以熟悉的方式管理django站点 构建用户。例如:

  • bin/django 运行django而不是 bin/python manage.py
  • bin/test 运行测试,而不是 bin/python manage.py测试项目。 (包括围绕您的测试运行覆盖范围)。
  • bin/django 自动使用正确的django设置。所以你可以 a development.cfg 构建配置和a production.cfg DjangoRecipe以使用不同的Django设置模块。 bin/django 将 自动使用正确的设置,无需设置环境变量。

DjangoRecipe是在Github上开发的 https://github.com/rvanlaar/djangoRecipe ,您可以在那里提交错误报告。它 使用travis ci进行测试,并通过landscape检查代码质量。io:

https://secure.travis-ci.org/rvanlaar/djangoRecipe.png?branch=master代码运行状况

设置

你可以看到一个如何使用下面的食谱的例子 常用设置:

[buildout]
show-picked-versions = true
parts =
    django
eggs =
    yourproject
    gunicorn
develop = .
# ^^^ Assumption: the current directory is where you develop 'yourproject'.
versions = versions

[versions]
Django = 1.8.2
gunicorn = 19.3.0

[django]
recipe = djangorecipe
settings = development
eggs = ${buildout:eggs}
project = yourproject
test = yourproject
scripts-with-settings = gunicorn
# ^^^ This line generates a bin/gunicorn-with-settings script with
# the correct django environment settings variable already set.

DjangoRecipe的早期版本用于为您创建项目结构, 如果你想的话。django本身现在产生了良好的项目结构。只是 运行 bin/django startproject<;projectname>; 。创建的主目录是 你应该把你的构建和可能的一个 setup.py

startproject为您创建一个 manage.py 脚本。你可以移除它,因为 bin/django djangoRecipe创建的脚本是(几乎完全正确的) 更换。

请参阅django的文档以了解 startproject

您还可以查看cookiecutter

支持的选项

配方支持以下选项。

< dl >
项目
此选项设置项目的名称。
设置
您可以设置要与一起使用的设置文件的名称 这个选项。如果你想有一个不同的 开发设置中的生产设置。它默认为 开发
测试
如果希望bin文件夹中的脚本运行 特定应用程序集这是您将使用的选项。设置为 要测试的应用程序标签列表。通常,它是 建议您使用此选项并将其设置为项目名称。
带有设置的脚本

添加到此处的脚本名称(如"gunicorn")获取重复的脚本 创建时在其后面加上"-with settings"(因此: bin/gunicorn和设置。他们得到设置环境变量 集合。目前,它主要用于不能运行的Gunicorn 在Django进程中。所以脚本必须已经通过 正确的设置环境变量。

注意 :将脚本打包一定是在你的"鸡蛋"选项里 部分。因此,如果使用gunicorn,请将其添加到此处(或将其添加为 您的项目)。

鸡蛋
与大多数构建菜谱一样,您可以/必须传递鸡蛋(=python包) 你想在这里有空。通常你会在 [buildout] 在这里通过说 ${buildout:eggs}
part和重用它
覆盖范围
如果设置 coverage=true bin/test 将开始覆盖率记录 在Django开始之前。必须导入 覆盖范围 库。见 额外的保险说明如下。

以下选项主要适用于旧项目或特殊情况:

< dl >
虚线设置路径
使用此选项指定要使用的自定义设置路径。默认情况下, 项目 设置 选项值是串联的,因此 实例 myproject.development 虚线设置路径= 其他地方。生产 允许您自定义。
额外路径
这里指定的所有路径都将用于扩展默认的python bin/* 脚本的路径。如果你在没有 正确的设置。
控制脚本
在bin文件夹中创建的脚本的名称。这个脚本是 相当于django通常创建的manage.py。默认情况下 使用节的名称(位于 [] 之间的部分)。传统上, 这个部分叫做 [django]
初始化
指定要插入到 控制脚本 。这个功能非常有限。尤其是 请注意,给定代码中的前导空格已被去掉。
wsgi
当设置为 正确 。只有在使用apache的 MODYWSGI。脚本的名称与控制脚本相同,但是 .wsgi 附加。所以它常常是 bin/django.wsgi
wsgi脚本
如果需要覆盖上面脚本的名称,请使用此选项。
额外部署脚本
在wsgi部署脚本中,有时需要包装应用程序 在一些云提供商的自定义包装中。此设置允许额外 要附加到wsgi脚本结尾的内容。例如 应用程序=一些附加包装(应用程序) 。所描述的极限 上面的初始化也适用于这里。
测试运行器
这是要创建的testrunner的名称。它 默认为 测试

覆盖说明

从django 1.7开始,不能使用自定义测试运行程序(如django nose) 在启用覆盖率的情况下自动运行测试。新的应用程序 初始化机制已经加载了 models.py ,例如, 在调用测试运行程序之前。所以你的模型在很大程度上 未经测试。

coverage=true bin/test 在django之前开始覆盖率记录 接到电话。它还打印出一个报告并导出xml结果(用于记录 例如,jenkins中的测试结果)和html结果。

在幕后, true 被转换为默认的 报表xml_report HTML U报告 。这些以空格分隔的函数名依次调用 覆盖率实例。有关可用的 功能。如果只需要快速报告和XML输出,可以设置 覆盖率=报告XML\u报告 而不是。

注意,不能将选项传递给这些函数,如html输出 位置。为此,在 buildout.cfg>旁边添加一个 .coveragerc 。见 覆盖率配置文件文档 。下面是一个示例:

[run]
omit =
    */migrations/*
    *settings.py
source = your_app

[report]
show_missing = true

[html]
directory = htmlcov

[xml]
output = coverage.xml

mod_wsgi的配置示例

如果要使用mod_wsgi部署项目,可以使用 示例作为起点:

<Directory /path/to/buildout>
     Order deny,allow
     Allow from all
</Directory>
<VirtualHost 1.2.3.4:80>
     ServerName      my.rocking.server
     CustomLog       /var/log/apache2/my.rocking.server/access.log combined
     ErrorLog        /var/log/apache2/my.rocking.server/error.log
     WSGIScriptAlias / /path/to/buildout/bin/django.wsgi
</VirtualHost>

角落案例:当几个wsgi脚本组合在一个 apache的单个虚拟主机实例。这是因为Django 使用环境变量django_settings_module。设置此变量 当加载第一个wsgi脚本时。其余的wsgi脚本将失败, 因为他们需要不同的设置模块。但是环境 变量django_settings_module只设置一次。新的初始化 添加到djangoRecipe的选项可用于解决此问题 如下所示:

[django]
settings = acceptance
initialization =
    import os
    os.environ['DJANGO_SETTINGS_MODULE'] = '${django:project}.${django:settings}'

为pydev生成控制脚本

在pydev中使用auto reload运行django需要添加一个小片段 代码:

import pydevd
pydevd.patch_django_autoreload(patch_remote_debugger=False, patch_show_console=True)

就在 manage.py 模块(或 在这种情况下,通常是生成的控制脚本。这个 下面的buildout示例生成两个控制脚本:一个用于命令行 用法和pydev的用法,以及所需的片段,使用配方的 初始化 选项:

[buildout]
parts = django pydev
eggs =
    mock

[django]
recipe = djangorecipe
eggs = ${buildout:eggs}
project = dummyshop

[pydev]
<= django
initialization =
    import pydevd
    pydevd.patch_django_autoreload(patch_remote_debugger=False, patch_show_console=True)

django配置的示例用法

django配置(http://django-configurations.readthedocs.org/en/latest/" rel="nofollow">http://django-configurations.readthedocs.org/en/latest/) 是一个帮助您将django设置组织到类中的应用程序。 使用它需要修改manage.py文件。使用 配方的初始化选项:

[buildout]
parts = django
eggs =
    hashlib

[django]
recipe = djangorecipe
eggs = ${buildout:eggs}
project = myproject
initialization =
    # Patch the manage file for django-configurations
    import os
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings')
    os.environ.setdefault('DJANGO_CONFIGURATION', 'Development')
    from configurations.management import execute_from_command_line
    import django
    django.core.management.execute_from_command_line = execute_from_command_line

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在sqlite数据库中保存特定列的历史记录   java如何更改/更新timeseriechart名称(JFreeChart)   java如何将整数转换为可绘制的   汇编什么解释Java的字节码   java查找已编译的类版本号   我应该什么时候在ColdFusion应用程序中使用Java?   java当一个实体的两个字段为(unique=true)时,如何处理JPA异常?   java为什么在所有其他实例都正确的情况下返回错误的布尔值?   java Hibernate每次都准备语句   java停留在平均字长上   对Java和日语字符进行编码   java如何将导致异常的方法的错误消息传递给侦听器中的onTestFailure方法   java代码没有打印结果   java为什么私有内部接口的方法必须是公共的?   休眠发生错误。有关详细信息,请参阅错误日志。JAVAlang.NullPointerException