[python] 가장 좋아하는 Django Tips & Features?

‘숨겨진 기능 …’이라는 질문 시리즈에서 영감을 얻은 Django 팁이나 알려지지 않았지만 유용한 기능에 대해 궁금합니다.

  • 답변 당 하나의 팁만 포함하십시오.
  • Django 버전 요구 사항이 있으면 추가하십시오.


답변

나는 단지 나 자신의 팁으로 시작할 것입니다 🙂

하드 코딩 된 디렉토리 이름을 피하려면 settings.py에서 os.path.dirname ()을 사용하십시오.

다른 위치에서 프로젝트를 실행하려면 settings.py에 경로를 하드 코딩하지 마십시오. 템플릿과 정적 파일이 Django 프로젝트 디렉토리 내에있는 경우 settings.py에서 다음 코드를 사용하십시오.

# 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"),
)

크레딧 :이 팁은 스크린 캐스트 ‘ Django From the Ground Up ‘ 에서 얻었 습니다 .


답변

Django Command Extensionspygraphviz를 설치 한 후 다음 명령을 실행하여 정말 멋진 Django 모델 시각화를 얻으십시오.

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


답변

대신 django-annoying의 render_to 데코레이터를 사용하십시오 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))

HttpResponse (예 : 리디렉션)를 반환하면 데코레이터가 단락되고 예상대로 작동합니다.


답변

내 사이트의 템플릿 전체에 사용하는 맞춤 태그 세트가 있습니다. 자동로드하는 방법을 찾고 (DRY, 기억합니까?), 나는 다음을 발견했습니다.

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

기본적으로로드 된 모듈 (예 : 기본 urlconf)에이 모듈을 넣으면 사용자 정의 태그 모듈의 태그 및 필터를 템플릿없이 사용할 수 있습니다. {% load custom_tag_module %} .

전달 된 인수는 template.add_to_builtins()모든 모듈 경로 일 수 있습니다. 맞춤 태그 모듈은 특정 응용 프로그램에서 작동하지 않아도됩니다. 예를 들어, 프로젝트 루트 디렉토리 (예 :)의 모듈 일 수도 있습니다 'project.custom_tag_module'.


답변

여러 장고 프로젝트에서 작업하고 있고 같은 버전의 장고 / 응용 프로그램에 의존하지 않을 가능성이있는 경우 Virtualenv + Python = 생명의 은인.


답변

URL을 하드 코딩하지 마십시오!

대신 URL 이름을 사용하십시오 .reverse 기능은 URL 자체를 얻을 수 있습니다.

URL 매핑을 정의 할 때 URL에 이름을 지정하십시오.

urlpatterns += ('project.application.views'
   url( r'^something/$', 'view_function', name="url-name" ),
   ....
)

URL마다 이름이 고유한지 확인하십시오.

나는 보통 스레드보기를위한 “cbx-forum-thread”와 같은 일관된 형식의 “project-appplication-view”를 가지고있다.

업데이트 (뻔뻔스럽게 아야 즈의 추가를 훔치는 ) :

이 이름은 url태그가 있는 템플릿에서 사용할 수 있습니다 .


답변

django 디버그 도구 모음을 사용하십시오 . 예를 들어, 뷰를 렌더링하는 동안 수행 된 모든 SQL 쿼리를 볼 수 있으며 쿼리에 대한 스택 추적도 볼 수 있습니다.