복붙노트

[PYTHON] 좋아하는 장고 팁 및 기능?

PYTHON

좋아하는 장고 팁 및 기능?

질문 시리즈 'Hidden features of ...'에서 영감을 얻어, 내가 좋아하는 Django 팁이나 덜 알려져 있지만 덜 유용한 기능에 대해 듣고 싶습니다.

해결법

  1. ==============================

    1.나는 단지 나 자신으로부터의 팁으로 시작할 것이다 :)

    나는 단지 나 자신으로부터의 팁으로 시작할 것이다 :)

    하드 코드 된 dirnames를 피하려면 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'에서이 팁을 얻었습니다.

  2. ==============================

    2.Django Command Extensions와 pygraphviz를 설치하고 다음 명령을 실행하여 정말 멋진 Django 모델 시각화를 얻습니다.

    Django Command Extensions와 pygraphviz를 설치하고 다음 명령을 실행하여 정말 멋진 Django 모델 시각화를 얻습니다.

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

    3.render_to_response 대신 django-annoying의 render_to 데코레이터를 사용하십시오.

    render_to_response 대신 django-annoying의 render_to 데코레이터를 사용하십시오.

    @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를 반환하면 (예 : 리디렉션) 데코레이터를 단락시키고 예상대로 작동한다는 점을 지적하여 편집했습니다.

  4. ==============================

    4.내 사이트의 템플릿 전체에 사용하는 맞춤 태그 집합이 있습니다. 자동로드하는 방법 (DRY, 기억 ​​하시겠습니까?)을 찾으면서 다음과 같은 것을 발견했습니다.

    내 사이트의 템플릿 전체에 사용하는 맞춤 태그 집합이 있습니다. 자동로드하는 방법 (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').

  5. ==============================

    5.Virtualenv + Python = 여러 장고 프로젝트를 작업하고 있고 모두 같은 버전의 장고 / 응용 프로그램에 의존하지 않을 가능성이있을 때 생명의 은인입니다.

    Virtualenv + Python = 여러 장고 프로젝트를 작업하고 있고 모두 같은 버전의 장고 / 응용 프로그램에 의존하지 않을 가능성이있을 때 생명의 은인입니다.

  6. ==============================

    6.URL을 하드 코딩하지 마세요!

    URL을 하드 코딩하지 마세요!

    대신 url 이름을 사용하고 역방향 함수를 사용하여 URL 자체를 가져옵니다.

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

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

    이름이 URL마다 고유해야합니다.

    일반적으로 일관된 형식 인 "프로젝트 - 애플리케이션보기"를 사용합니다. 스레드보기를위한 "cbx-forum-thread".

    업데이트 (뻔뻔하게 ayaz의 추가를 훔친다) :

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

  7. ==============================

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

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

  8. ==============================

    8.자신의 로그인 페이지를 작성하지 마십시오. django.contrib.auth를 사용하고 있다면.

    자신의 로그인 페이지를 작성하지 마십시오. django.contrib.auth를 사용하고 있다면.

    실제로 django.contrib.admin을 사용하고 있고 django.template.loaders.app_directories.load_template_source가 템플릿 로더에 있으면 템플릿을 무료로 사용할 수 있다는 사실이 더러운 비밀입니다.

    # somewhere in urls.py
    urlpatterns += patterns('django.contrib.auth',
        (r'^accounts/login/$','views.login', {'template_name': 'admin/login.html'}),
        (r'^accounts/logout/$','views.logout'),
    )
    
  9. ==============================

    9.다른 사용자 모델이 있고 포함 시키려한다고 가정 해 보겠습니다. 모든 반응에서. 대신 이렇게 :

    다른 사용자 모델이 있고 포함 시키려한다고 가정 해 보겠습니다. 모든 반응에서. 대신 이렇게 :

    def myview(request, arg, arg2=None, template='my/template.html'):
        ''' My view... '''
        response = dict()
        myuser = MyUser.objects.get(user=request.user)
        response['my_user'] = myuser
        ...
        return render_to_response(template,
                                  response,
                                  context_instance=RequestContext(request))
    

    컨텍스트 프로세스를 사용하면 변수를 변수에 전달할 수 있습니다. 템플릿. 나는 일반적으로 'my_project / apps / core / context.py :

    def my_context(request):
        try:
            return dict(my_user=MyUser.objects.get(user=request.user))
        except ObjectNotFound:
            return dict(my_user='')
    

    settings.py에서 TEMPLATE_CONTEXT_PROCESSORS에 다음 행을 추가하십시오.

    TEMPLATE_CONTEXT_PROCESSORS = (
        'my_project.apps.core.context.my_context',
        ...
    )
    

    요청이있을 때마다 my_user 키가 자동으로 포함됩니다.

    몇 달 전에이 블로그 게시물을 작성하여 잘라 붙여 넣으려고합니다.

    상자에서 Django는 몇 가지 신호를 제공합니다. 믿을 수 없을 정도로 유용합니다. 너는 사전과 일을 할 수있는 능력이있다. 사후 저장, 초기화, 삭제 또는 심지어 요청이있을 때 처리됨. 따라서 개념 및 어떻게 사용되는지를 보여줍니다. 우리가 블로그를 가지고 있다고 해봅시다.

    from django.utils.translation import ugettext_lazy as _
    class Post(models.Model):
        title = models.CharField(_('title'), max_length=255)
        body = models.TextField(_('body'))
        created = models.DateTimeField(auto_now_add=True)
    

    그래서 어떻게 든 당신은 많은 blog-pinging 중의 1 개에 통지하고 싶다. 우리는 새로운 게시물을 만들었고 가장 최근의 게시물 캐시, 그리고 그것에 대해 트위터. 신호를 가지고 있으면 모든 것을 추가 할 필요없이이 모든 것을 할 수있는 능력 메소드를 Post 클래스에 추가합니다.

    import twitter
    
    from django.core.cache import cache
    from django.db.models.signals import post_save
    from django.conf import settings
    
    def posted_blog(sender, created=None, instance=None, **kwargs):
        ''' Listens for a blog post to save and alerts some services. '''
        if (created and instance is not None):
            tweet = 'New blog post! %s' instance.title
            t = twitter.PostUpdate(settings.TWITTER_USER,
                                   settings.TWITTER_PASSWD,
                                   tweet)
            cache.set(instance.cache_key, instance, 60*5)
           # send pingbacks
           # ...
           # whatever else
        else:
            cache.delete(instance.cache_key)
    post_save.connect(posted_blog, sender=Post)
    

    우리는 그 기능을 정의하고 함수를 포스트 모델에 연결하는 post_init 신호 저장된 후에 실행하십시오.

  10. ==============================

    10.내가 밖으로 시작했을 때 나는 Paginator가 있다는 것을 몰랐다. 당신이 그 존재를 알고 있는지 확인하라 !!

    내가 밖으로 시작했을 때 나는 Paginator가 있다는 것을 몰랐다. 당신이 그 존재를 알고 있는지 확인하라 !!

  11. ==============================

    11.IPython을 사용하여 모든 레벨에서 코드로 이동하고 IPython의 힘을 사용하여 디버깅하십시오. IPython을 설치하고 나면 디버깅 할 위치에이 코드를 넣으십시오.

    IPython을 사용하여 모든 레벨에서 코드로 이동하고 IPython의 힘을 사용하여 디버깅하십시오. IPython을 설치하고 나면 디버깅 할 위치에이 코드를 넣으십시오.

    from IPython.Shell import IPShellEmbed; IPShellEmbed()()
    

    그런 다음 페이지를 새로 고치고 runserver 창으로 이동하면 대화 형 IPython 창이 열립니다.

    필자는 TextMate에 스 니펫을 설정하여 ipshell을 입력하고 탭을 누르기 만하면됩니다. 나는 그것 없이는 살 수 없었다.

  12. ==============================

    12.개발 서버에 SMTP를 실제로 설치하지 않으려는 경우 출력되는 SMTP 서버를 실행하십시오.

    개발 서버에 SMTP를 실제로 설치하지 않으려는 경우 출력되는 SMTP 서버를 실행하십시오.

    명령 줄 :

    python -m smtpd -n -c DebuggingServer localhost:1025
    
  13. ==============================

    13.django-admin 설명서에서 :

    django-admin 설명서에서 :

    Bash 쉘을 사용한다면, 장고 배포판의 extras / django_bash_completion에있는 Django bash 완성 스크립트를 설치하십시오. django-admin.py 및 manage.py 명령의 탭 완성을 가능하게하므로 예를 들어 ...

  14. ==============================

    14.django_extensions와 함께 제공되는 ./manage.py runserver_plus facilty는 정말 대단합니다.

    django_extensions와 함께 제공되는 ./manage.py runserver_plus facilty는 정말 대단합니다.

    특히 Werkzeug 디버거를 사용하여 스택의 각 지점에 대한 대화식 디버깅 콘솔을 만드는 고급 디버그 페이지를 만듭니다 (스크린 샷 참조). 또한 객체 / 프레임에 대한 정보를 표시하는 매우 유용한 편리한 디버깅 메소드 dump ()를 제공합니다.

    설치하려면 pip를 사용할 수 있습니다.

    pip install django_extensions
    pip install Werkzeug
    

    그런 다음 settings.py의 INSTALLED_APPS 튜플에 'django_extensions'를 추가하고 새 확장을 사용하여 개발 서버를 시작하십시오.

    ./manage.py runserver_plus
    

    이렇게하면 디버깅 방식이 바뀝니다.

  15. ==============================

    15.저는 Python 디버거 pdb를 사용하여 Django 프로젝트를 디버깅하고 싶습니다.

    저는 Python 디버거 pdb를 사용하여 Django 프로젝트를 디버깅하고 싶습니다.

    이것은 그것을 사용하는 방법을 배우기위한 유용한 링크입니다 : http://www.ferg.org/papers/debugging_in_python.html

  16. ==============================

    16.Django와 다른 응용 프로그램간에 데이터를 교환하려고 할 때 request.raw_post_data는 좋은 친구입니다. 이를 사용하여 XML 데이터를 수신하고 사용자 지정 처리합니다.

    Django와 다른 응용 프로그램간에 데이터를 교환하려고 할 때 request.raw_post_data는 좋은 친구입니다. 이를 사용하여 XML 데이터를 수신하고 사용자 지정 처리합니다.

    선적 서류 비치: http://docs.djangoproject.com/en/dev/ref/request-response/

  17. ==============================

    17.디버그 정보를 덤프하려면보기 코드에 어설 션 False를 추가하십시오.

    디버그 정보를 덤프하려면보기 코드에 어설 션 False를 추가하십시오.

  18. ==============================

    18.Django와 함께 Jinja2를 사용하십시오.

    Django와 함께 Jinja2를 사용하십시오.

    Django 템플릿 언어가 (나 같은) 매우 제한적이라면, 그걸로 고생 할 필요가 없다. 장고는 유연하고 템플릿 언어는 나머지 시스템과 느슨하게 결합되어 있으므로 다른 템플릿 언어를 플러그인하고 HTTP 응답을 렌더링하는 데 사용하십시오!

    Jinja2를 사용합니다. 장고 템플릿 언어의 파워 업 버전과 거의 같으며, 동일한 구문을 사용하며 if 문에서 표현식을 사용할 수 있습니다! if_item_in_list와 같은 맞춤 if 태그를 만들지 않아도됩니다! 단순히 % {목록 %의 항목 인 경우} 또는 {% if object.field <10 %}를 말할 수 있습니다.

    하지만 그건 전부가 아닙니다. 그것은 템플릿 생성을 쉽게하기위한 더 많은 기능을 가지고 있습니다.

  19. ==============================

    19.이것은 Django URL 이름과 역 URL 전달에 대한 위의 응답에 추가됩니다.

    이것은 Django URL 이름과 역 URL 전달에 대한 위의 응답에 추가됩니다.

    URL 이름은 템플릿 내에서 효과적으로 사용할 수도 있습니다. 예를 들어, 주어진 URL 패턴의 경우 :

    url(r'(?P<project_id>\d+)/team/$', 'project_team', name='project_team')
    

    템플릿에서 다음을 사용할 수 있습니다.

    <a href="{% url project_team project.id %}">Team</a>
    
  20. ==============================

    20.Django의 "views"는 HttpResponse를 반환하는 호출 가능 일 뿐이므로 Ruby on Rails 및 기타 프레임 워크와 같은 클래스 기반보기를 쉽게 만들 수 있습니다.

    Django의 "views"는 HttpResponse를 반환하는 호출 가능 일 뿐이므로 Ruby on Rails 및 기타 프레임 워크와 같은 클래스 기반보기를 쉽게 만들 수 있습니다.

    클래스 기반 뷰를 만드는 방법에는 여러 가지가 있습니다.

    from django import http
    
    class RestView(object):
        methods = ('GET', 'HEAD')
    
        @classmethod
        def dispatch(cls, request, *args, **kwargs):
            resource = cls()
            if request.method.lower() not in (method.lower() for method in resource.methods):
                return http.HttpResponseNotAllowed(resource.methods)
            try:
                method = getattr(resource, request.method.lower())
            except AttributeError:
                raise Exception("View method `%s` does not exist." % request.method.lower())
            if not callable(method):
                raise Exception("View method `%s` is not callable." % request.method.lower())
            return method(request, *args, **kwargs)
    
        def get(self, request, *args, **kwargs):
            return http.HttpResponse()
    
        def head(self, request, *args, **kwargs):
            response = self.get(request, *args, **kwargs)
            response.content = ''
            return response
    

    기본보기에서 조건부 요청 처리 및 권한 부여와 같은 기타 모든 작업을 추가 할 수 있습니다.

    일단 당신의 견해를 설정하면 urls.py는 다음과 같이 보입니다 :

    from django.conf.urls.defaults import *
    from views import MyRestView
    
    urlpatterns = patterns('',
        (r'^restview/', MyRestView.dispatch),
    )
    
  21. ==============================

    21.render_to_response를 사용하여 컨텍스트를 템플릿에 바인딩하고 렌더 (대신 Django 문서가 일반적으로 보여주는 것)하는 대신 direct_to_template이라는 일반 뷰를 사용하십시오. render_to_response가하는 것과 같은 일을하지만 템플릿 컨텍스트에 RequestContext를 자동으로 추가하여 컨텍스트 프로세서를 암시 적으로 사용할 수있게합니다. render_to_response를 사용하여 수동으로이 작업을 수행 할 수 있지만 그 이유는 무엇입니까? 그것은 기억하기위한 또 다른 단계이고 또 다른 LOC입니다. 컨텍스트 프로세서를 사용하는 것 외에도 템플릿에 RequestContext를 사용하면 다음과 같은 작업을 수행 할 수 있습니다.

    render_to_response를 사용하여 컨텍스트를 템플릿에 바인딩하고 렌더 (대신 Django 문서가 일반적으로 보여주는 것)하는 대신 direct_to_template이라는 일반 뷰를 사용하십시오. render_to_response가하는 것과 같은 일을하지만 템플릿 컨텍스트에 RequestContext를 자동으로 추가하여 컨텍스트 프로세서를 암시 적으로 사용할 수있게합니다. render_to_response를 사용하여 수동으로이 작업을 수행 할 수 있지만 그 이유는 무엇입니까? 그것은 기억하기위한 또 다른 단계이고 또 다른 LOC입니다. 컨텍스트 프로세서를 사용하는 것 외에도 템플릿에 RequestContext를 사용하면 다음과 같은 작업을 수행 할 수 있습니다.

    <a href="{{MEDIA_URL}}images/frog.jpg">A frog</a> 
    

    이것은 매우 유용합니다. 사실 일반적으로 일반적인 견해에서 +1. Django 문서는 대부분 간단한 응용 프로그램에 대한 views.py 파일을 가지고 있지 않은 단축키로 표시하지만 사용자 고유의보기 기능 내에서 사용할 수도 있습니다.

    from django.views.generic import simple
    
    def article_detail(request, slug=None):
        article = get_object_or_404(Article, slug=slug)
        return simple.direct_to_template(request, 
            template="articles/article_detail.html",
            extra_context={'article': article}
        )
    
  22. ==============================

    22.나는 그 질문에 답할만한 평판이 충분하지 않지만 진자를 사용하려고한다면 장고는 템플릿 블록 이름에서 '-'문자를 지원하지 않는다는 점에 유의해야한다. 이로 인해 많은 문제가 발생했고 생성 된 매우 모호한 오류 메시지를 추적하는 데 시간을 낭비했습니다.

    나는 그 질문에 답할만한 평판이 충분하지 않지만 진자를 사용하려고한다면 장고는 템플릿 블록 이름에서 '-'문자를 지원하지 않는다는 점에 유의해야한다. 이로 인해 많은 문제가 발생했고 생성 된 매우 모호한 오류 메시지를 추적하는 데 시간을 낭비했습니다.

  23. ==============================

    23.webdesign 앱은 웹 사이트 디자인을 시작할 때 매우 유용합니다. 가져온 다음에는이를 추가하여 샘플 텍스트를 생성 할 수 있습니다.

    webdesign 앱은 웹 사이트 디자인을 시작할 때 매우 유용합니다. 가져온 다음에는이를 추가하여 샘플 텍스트를 생성 할 수 있습니다.

    {% load webdesign %}
    {% lorem 5 p %}
    
  24. ==============================

    24.django.db.models.get_model을 사용하면 모델을 가져 오지 않고 검색 할 수 있습니다.

    django.db.models.get_model을 사용하면 모델을 가져 오지 않고 검색 할 수 있습니다.

    James는 "Django tips : 더 나은 템플릿 태그 작성 - 반복 4"가 얼마나 편리한지를 보여줍니다.

  25. ==============================

    25."manage.py runserver"로 실행할 수있는 개발 서버가 있다는 것을 모두 알고 있지만 정적 파일 (CSS / JS / IMG)을 제공하기위한 개발 뷰가 있다는 것을 알고 계셨습니까?

    "manage.py runserver"로 실행할 수있는 개발 서버가 있다는 것을 모두 알고 있지만 정적 파일 (CSS / JS / IMG)을 제공하기위한 개발 뷰가 있다는 것을 알고 계셨습니까?

    Django는 정적 파일을 제공하는 방법이 전혀 없기 때문에 처음에는 새로운 사람들이 의아해합니다. 이것은 dev 팀이 실생활 웹 서버의 작업이라고 생각하기 때문입니다.

    그러나 개발할 때 Apache + mod_wisgi를 설정하고 싶지는 않을 것입니다. 그런 다음 urls.py에 다음을 추가하면됩니다.

    (r'^site_media/(?P<path>.*)$', 'django.views.static.serve',
            {'document_root': '/path/to/media'}),
    

    CSS / JS / IMG는 www.yoursite.com/site_media/에서 사용할 수 있습니다.

    물론 프로덕션 환경에서는 사용하지 마십시오.

  26. ==============================

    26.나는 sorl-thumbnails 앱에 대한 문서에서 이것을 배웠다. 템플리트 태그의 "as"키워드를 사용하여 템플리트의 다른 위치에서 호출 결과를 사용할 수 있습니다.

    나는 sorl-thumbnails 앱에 대한 문서에서 이것을 배웠다. 템플리트 태그의 "as"키워드를 사용하여 템플리트의 다른 위치에서 호출 결과를 사용할 수 있습니다.

    예 :

    {% url image-processor uid as img_src %}
    <img src="{% thumbnail img_src 100x100 %}"/>
    

    이것은 Django templatetag 문서에서 언급되었지만 루프에 대해서만 언급되었습니다. 그들은 당신이 다른 곳 (어디에서?)에서도 이것을 사용할 수 있다고 말하지 않습니다.

  27. ==============================

    27.django.views.generic.list_detail.object_list - 페이지 매김에 대한 모든 논리 및 템플릿 변수를 제공합니다 (필자는 천천히 작성한 것 중 하나임). 래핑하면 필요한 모든 논리를 사용할 수 있습니다. 이 보석으로 인해 내 "검색 결과"페이지에 여러 시간의 디버깅 오류가 저장되어 프로세스에서보기 코드가 더 깨끗해졌습니다.

    django.views.generic.list_detail.object_list - 페이지 매김에 대한 모든 논리 및 템플릿 변수를 제공합니다 (필자는 천천히 작성한 것 중 하나임). 래핑하면 필요한 모든 논리를 사용할 수 있습니다. 이 보석으로 인해 내 "검색 결과"페이지에 여러 시간의 디버깅 오류가 저장되어 프로세스에서보기 코드가 더 깨끗해졌습니다.

  28. ==============================

    28.PyCharm IDE는 Django를 기본적으로 지원하므로 코드를 작성하고 특히 디버그 할 수있는 좋은 환경입니다.

    PyCharm IDE는 Django를 기본적으로 지원하므로 코드를 작성하고 특히 디버그 할 수있는 좋은 환경입니다.

  29. ==============================

    29.XML REST API 백엔드 (SQL 대신)를 사용하는 Django 모델을 생성하려면 xml_models를 사용하십시오. 이것은 특히 써드 파티 API를 모델링 할 때 매우 유용합니다 - 익숙한 QuerySet 구문을 모두 얻을 수 있습니다. PyPI에서 설치할 수 있습니다.

    XML REST API 백엔드 (SQL 대신)를 사용하는 Django 모델을 생성하려면 xml_models를 사용하십시오. 이것은 특히 써드 파티 API를 모델링 할 때 매우 유용합니다 - 익숙한 QuerySet 구문을 모두 얻을 수 있습니다. PyPI에서 설치할 수 있습니다.

    API의 XML :

    <profile id=4>
        <email>joe@example.com</email>
        <first_name>Joe</first_name>
        <last_name>Example</last_name>
        <date_of_birth>1975-05-15</date_of_birth>
    </profile>
    

    그리고 지금은 파이썬에서 :

    class Profile(xml_models.Model):
        user_id = xml_models.IntField(xpath='/profile/@id')
        email = xml_models.CharField(xpath='/profile/email')
        first = xml_models.CharField(xpath='/profile/first_name')
        last = xml_models.CharField(xpath='/profile/last_name')
        birthday = xml_models.DateField(xpath='/profile/date_of_birth')
    
        finders = {
            (user_id,):  settings.API_URL +'/api/v1/profile/userid/%s',
            (email,):  settings.API_URL +'/api/v1/profile/email/%s',
        }
    
    profile = Profile.objects.get(user_id=4)
    print profile.email
    # would print 'joe@example.com'
    

    또한 관계 및 콜렉션을 처리 할 수 ​​있습니다. 많이 사용되는 생산 코드에서 매일 사용하므로 베타 버전이라도 매우 유용합니다. 또한 테스트에 사용할 수있는 스텁 세트도 있습니다.

    (면책 조항 : 나는이 도서관의 저자는 아니지만, 지금은 커미터이다. 약간의 사소한 커밋을했다)

  30. ==============================

    30.데이터베이스 마이그레이션을 사용하십시오. 남쪽을 사용하십시오.

    데이터베이스 마이그레이션을 사용하십시오. 남쪽을 사용하십시오.

  31. from https://stackoverflow.com/questions/550632/favorite-django-tips-features by cc-by-sa and MIT license