308 votos

¿Favorito Django consejos y características?

Inspirado por la serie de pregunta 'Oculto características de...', tengo curiosidad por saber tus favorito Django consejos o menos conocidas pero útiles características te conoce.

  • Por favor, incluya sólo una punta por responder.
  • Añadir requisitos Django versión si hay alguna.

222voto

Haes Puntos 6453

Voy a empezar con un consejo de mi parte :)

Uso os.path.dirname() en settings.py para evitar codificado dirnames.

No codificar camino en su settings.py si desea ejecutar el proyecto en diferentes lugares. Utilice el siguiente código en settings.py si las plantillas y los archivos estáticos se encuentran dentro de las Django directorio del proyecto:

# 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éditos: llegué a este consejo de la screencast 'Django Desde el Suelo'.

130voto

Haes Puntos 6453

Instalar Las extensiones de comando Django y pygraphviz y luego el siguiente comando para obtener un muy buen tema buscando Django visualización de modelo:

./manage.py graph_models -a -g -o my_project.png

119voto

user20955 Puntos 1817

Uso de django-molesto render_to decorador en vez de render_to_response .

@render_to('template.html')
def foo(request):
    bars = Bar.objects.all()
    if request.user.is_authenticated():
        return HttpResponseRedirect("/some/url/")
    else:
        return {'bars': bars}

# equals to
def foo(request):
    bars = Bar.objects.all()
    if request.user.is_authenticated():
        return HttpResponseRedirect("/some/url/")
    else:
        return render_to_response('template.html',
                              {'bars': bars},
                              context_instance=RequestContext(request))

Editado para señalar que devolver un HttpResponse (como una redirección) cortocircuito el decorador y el trabajo tal como lo espera.

102voto

Steef Puntos 9308

Hay un conjunto de etiquetas personalizadas puedo usar todo mi templates del sitio. Buscando una manera de autoload (SECO, ¿recuerdas?), He encontrado los siguientes:

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

Si pones esto en un módulo que se carga por defecto (su principal urlconf por ejemplo), tendrá las etiquetas y los filtros de su etiqueta personalizada módulo disponible en cualquier plantilla, sin necesidad de utilizar {% load custom_tag_module %}.

El argumento que se pasa a template.add_to_builtins() puede ser cualquier ruta de acceso del módulo; su etiqueta personalizada módulo no tiene que vivir en una aplicación específica. Por ejemplo, también puede ser un módulo en el proyecto del directorio raíz (por ejemplo. 'project.custom_tag_module').

97voto

phillc Puntos 2748

Virtualenv + Python = salvavidas si estás trabajando en varios proyectos de Django y existe la posibilidad que todos ellos no dependen de la misma versión de Django/una aplicación.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X