‘숨겨진 기능 …’이라는 질문 시리즈에서 영감을 얻은 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 Extensions 및 pygraphviz를 설치 한 후 다음 명령을 실행하여 정말 멋진 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
태그가 있는 템플릿에서 사용할 수 있습니다 .