¿Consejos y funciones favoritos de Django?
Inspirándome en la serie de preguntas 'Funciones ocultas de...', tengo curiosidad por conocer tus consejos favoritos de Django o las características menos conocidas pero útiles que conoces.
- Por favor, incluya solo un consejo por respuesta.
- Agregue los requisitos de la versión de Django, si los hay.
Voy a empezar con un consejo mío :)
Utilice os.path.dirname() en settings.py para evitar nombres de directorio codificados.
No codifique las rutas en su settings.py si desea ejecutar su proyecto en diferentes ubicaciones. Utilice el siguiente código en settings.py si sus plantillas y archivos estáticos se encuentran dentro del directorio del proyecto Django:
# 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: obtuve este consejo del screencast ' Django From the Ground Up '.
Instale Django Command Extensions y pygraphviz y luego ejecute el siguiente comando para obtener una visualización del modelo Django realmente atractiva:
./manage.py graph_models -a -g -o my_project.png
Utilice el decorador de django-annoying render_to
en lugar 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 una HttpResponse (como una redirección) provocará un cortocircuito en el decorador y funcionará tal como se espera.