308 votes

Conseils de Django préférés & caractéristiques ?

Inspiré par la série de question « Hidden caractéristiques de... », je suis curieux d’entendre parler de vos astuces préférées de Django ou moins connues mais utile de fonctionnalités que vous connaissez.

  • S’il vous plaît, n'inclure qu’une seule pointe par réponse.
  • Ajouter Django version exigences éventuelles.

222voto

Haes Points 6453

Je vais juste commencer avec un bout de moi-même :)

Utiliser os.chemin d'accès.dirname() dans settings.py pour éviter codé en dur dirnames.

Ne pas coder en dur le chemin de votre settings.py si vous voulez exécuter votre projet dans les différents endroits. Utilisez le code suivant dans settings.py si des modèles et des fichiers statiques sont situées dans le projet Django répertoire:

# settings.py
import os
PROJECT_DIR = os.path.dirname(__file__)
...
STATIC_DOC_ROOT = os.path.join(PROJECT_DIR, "static")
...
TEMPLATE_DIRS = (
    os.path.join(PROJECT_DIR, "templates"),
)

Crédits: j'ai eu cette astuce du screencast 'Django à Partir de la base'.

130voto

Haes Points 6453

Installez Les Extensions de commande de Django et pygraphviz et puis question la commande suivante pour obtenir un très beau regard visualisation de modèle Django :

119voto

user20955 Points 1817

Utiliser django-ennuyeuxdécorateur au lieu de .

Édité pour souligner que son retour HttpResponse (comme une redirection) court circuit le décorateur et le travail comme vous attendront.

102voto

Steef Points 9308

Il y a un ensemble de balises personnalisées que j'utilise sur mes templates du site. Vous cherchez un moyen de chargement automatique (SEC, vous vous souvenez?), J'ai trouvé le suivant:

from django import template
template.add_to_builtins('project.app.templatetags.custom_tag_module')

Si vous le mettez dans un module qui est chargé par défaut (votre principal urlconf par exemple), vous aurez les balises et filtres de votre étiquette personnalisée module disponible dans n'importe quel modèle, sans l'aide d' {% load custom_tag_module %}.

L'argument passé à l' template.add_to_builtins() peut être n'importe quel chemin d'accès du module; votre étiquette personnalisée module ne pas avoir à vivre dans une application spécifique. Par exemple, il peut aussi être un module dans votre projet dans le répertoire racine (par exemple. 'project.custom_tag_module').

97voto

phillc Points 2748

Virtualenv + Python = Life Saver si vous travaillez sur plusieurs projets Django et il est possible qu'ils ne dépendent pas tous de la même version de Django / une application.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X