Skip to main content

Buildout recipes for django development

Project description

© 2014 Thomas Khyn

Buildout recipes for django development

About

The recipes available in djangorecipebook are mostly derived from djangorecipe’s functionalities. However, while djangorecipe aims at generating all scripts in one part, djangorecipebook enables you to define one part per script (create, manage, wsgi, test), hence allowing the use of different settings and/or eggs for each part.

djangorecipebook works with django 1.4 to 1.7 and relevant python versions (2.6 to 3.4, depending on django version).

Available recipes

djangorecipebook:manage

Creates a management script for the project

djangorecipebook:wsgi

Creates a wsgi script for the project

djangorecipebook:fcgi

Creates a fcgi script for the project

djangorecipebook:test

Creates a script that invokes manage.py test [apps]

djangorecipebook:create

Creates a django project from a user-defined template or using django’s startproject management command. This recipe will not generate any script. The name of the created project is the name of the section.

Options

Common options

project-dir

The directory where the project files lie, relative to the buildout.cfg directory.

Defaults to '.' (buildout directory).

settings

The settings module to load, imported from the project directory.

Defaults to 'settings'.

extra-paths

Paths to add to sys.path in the generated script.

Defaults to [].

envvars

Any environment variable that need to be set for the test run, one per line, under the form VARIABLE = value (spaces are tolerated).

Defaults to no environment variable set.

initialization

Some (basic) python initialization code to insert in the generated script. Don’t forget that leading whitespaces are stripped.

Defaults to ''.

Manage options

args

Any command-line argument you wish to have added to the generated script, separated by spaces or line-breaks.

Defaults to no arguments.

WSGI and FCGI options

log-file

The path to a log file where all stdout and/or stderr data should be redirected to.

Defaults to '', which disables logging

log-level

The level to log errors for. Can be one of INFO (stdout + stderr) or ERROR (stderr only).

Defaults to INFO.

virtualenv

The virtualenv that should be used to run the wsgi/fcgi script. This requires virtualenv and virtualenvwrapper, as it relies upon the WORKON_HOME environment variable.

Defaults to '', which disables any virtual environment setup.

Test options

args

See Manage options.

nose

Use this option if you are using nose (and therefore django_nose) to test your Django app or project. This will simply include django_nose and nose in your buildout.

Defaults to unset.

apps

The names of the apps that should be tested, separated by spaces or line-breaks.

Defaults to all the apps defined in INSTALLED_APPS

Create options

In create mode, the following common options are unused:

  • extra-paths

  • initialization

The settings import path must be set as it is used to determine whether the project has already been created or not.

The following options are added:

template-dirs

The directories in which to search for user-defined project templates. This option may also be added in a [djangorecipebook] section (for example in the default.cfg file). See the Templates discovery section below.

Defaults to the built-in templates directory, containing default django project templates.

template

The template that should be used.

Defaults to the standard django project for the major version of django you are using.

secret

The SECRET_KEY to be used in the created settings file(s).

Defaults to a randomly generated alphanumeric key.

For more details on templating, see the Templates section below.

Templates

In create mode, a templating engine is available for greater personalisation of your django project initialization.

Templates discovery

If a template-dirs option is found either in the recipe section or in a specific djangorecipebook section, the recipe searches in these directories - from the last defined to the first - for a subdirectory name matching the template name provided.

If the search is unsuccessful or if none of template-dirs or template are defined, the recipe uses the default template for the major version of django being used.

For example, if in ~/.buildout/default.cfg you have the following lines:

[djangorecipebook]
template-dirs =
  /my/project/template/directory
  /my/project/template/directory2

And your buildout.cfg contains this section:

[mynewproject]
recipe = djangorecipebook:create
template-dirs = /my/other/template/dir
template = mytemplate

The recipe will search for a mytemplate directory in that order:

  1. /my/other/template/dir

  2. /my/project/template/directory2

  3. /my/project/template/directory

Template engine

The template engine is as simple as it can be and relies upon pythons’s string.Template. A variable can be inserted in any file or directory name or file content in template directory using the syntax ${variable}.

The following variables are available:

  • any user-defined recipe option from the configuration file

  • secret: the secret key for django settings

  • project_name: the project name (= the section name)

  • year: the current year

  • month: the current month

  • day: the current day of the month

For example, if you have in buildout.cfg:

[mynewproject]
recipe = djangorecipebook:create
template = mytemplate
author = Thomas Khyn

for a copyright notice in a module docstring, you may use:

(c) ${year} ${author}

which will produce to the following output in the final file (if we are in 2014):

(c) 2014 Thomas Khyn

or, if you have a directory named ${project_name}_parameters, the final name will be mynewproject_parameters.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

djangorecipebook-1.1.zip (21.4 kB view details)

Uploaded Source

Built Distribution

djangorecipebook-1.1-py2.7.egg (29.8 kB view details)

Uploaded Source

File details

Details for the file djangorecipebook-1.1.zip.

File metadata

  • Download URL: djangorecipebook-1.1.zip
  • Upload date:
  • Size: 21.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for djangorecipebook-1.1.zip
Algorithm Hash digest
SHA256 3e2e447af737b7de709133dd6a3fae780acb1ac2a37198c7b37971a9ecdaf93a
MD5 04babdeaa4d689241ada557fee29181b
BLAKE2b-256 ba9ef8d954044827d83b9f7dad42a07a92f0db1bc1bc3308686ba63195da65e7

See more details on using hashes here.

File details

Details for the file djangorecipebook-1.1-py2.7.egg.

File metadata

File hashes

Hashes for djangorecipebook-1.1-py2.7.egg
Algorithm Hash digest
SHA256 a6e3d4698283497b98028a863427011dff8c167e2b397dad7954ca64610781dd
MD5 a2e90921319a5f352ee972f835c99346
BLAKE2b-256 5a84d43ca11458e1e1182179ad35772d9becec43f72e50789f9a78708337b244

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page