Django 진급-고급 보기와 URL 설정

7574 단어 Django
하나.urls 구명 그룹화 사용법:
url(r'^reviews/(?P[0-9]{4})/(?P[0-9]{2})/(?P[0-9]{2})/$',
views.review_detail)

둘.보기 함수에 매개 변수 전달
urlpatterns = [
        url(r'^reviews/(?P[0-9]{4})/$',
            views.year_archive,
            {'foo': 'bar'}
        ),
]

#     ,          
def year_archive(request, year="xxx",foo="yyy"):  
    ...

셋.오류 페이지 사용자 정의
4
  • 프로필 수정 myblog/settings.py
  • DEBUG = False  #   Debug
    ALLOWED_HOSTS = ['*'] #   allowrd_hosts

    4
  • 사용자 정의 오류 페이지 myblog/templates/xxx.html

  • 4
  • 보기 함수 myblog/views.py
  • 
    def page_not_found(request):
        return render(request,'page_error.html')
    
    def page_error(request):
        return render(request,'page_error')
    
    def page_forbidden(request):
        return render(request,'page_forbidden.html')
    
    def bad_request(request):
        return render(request,'bad_request.html')

    4
  • url 설정 myblog/urls.py
  • from .views import *
    urlpatterns = [...]
    
    handler404 = page_not_found
    handler500 = page_error
    handler403 = page_forbidden
    handler400 = bad_request

    넷.url 도입 설정 사용법
    사용법 1: URL () 추가 URL 모드 도입
    from django.conf.urls import include, url
    from apps.main import views as main_views
    from credit import views as credit_views
    
    extra_patterns = [
        url(r'^reports/(?P[0-9]+)/$', credit_views.report),
        url(r'^charge/$', credit_views.charge),
    ]
    urlpatterns = [
        url(r'^$', main_views.homepage),   #         
        url(r'^help/', include('apps.help.urls')),  #  urls  
        url(r'^credit/', include(extra_patterns)),  #    urlpatterns
    ]

    사용법2: 공통 경로 접두사 추출
    urlpatterns = [
            url(r'^(?P\w+)-(?P\w+)/history/$',
                views.history),
            url(r'^(?P\w+)-(?P\w+)/edit/$',
        views.edit),
            url(r'^(?P\w+)-(?P\w+)/discuss/$',
                views.discuss),
            url(r'^(?P\w+)-(?P\w+)/permissions/$',
    views.permissions),
    ]
    
      ↓↓↓
    
    urlpatterns = [
            url(r'^(?P\w+)-(?P\w+)/',
                include([
                    url(r'^history/$', views.history),
                    url(r'^edit/$', views.edit),
                    url(r'^discuss/$', views.discuss),
                    url(r'^permissions/$', views.permissions),
    ]) ),
    ]

    오.구문 분석 URL
  • URL 반전에 필요한 도구:
    4
  • 템플릿 중: URL 템플릿 레이블을 사용합니다

  • 4
  • Python 코드: django. 사용core.urlresolvers.reverse() 함수

  • 4
  • Django 모델 인스턴스 URL과 관련된 상위 코드에서 get 사용absolute_url () 방법


  • 4
  • 예:
  • 템플릿에서
    "{% url 'reviews-year-archive' 2012 %}">2012 Archive
     
    "{% url 'reviews-year-archive' yearvar %}">{{
    yearvar }} Archive

    python 코드에서
    from django.core.urlresolvers import reverse
    from django.http import HttpResponseRedirect
    
    def redirect_to_year(request):
        ...
        year = 2012
        ...
        return HttpResponseRedirect(reverse('reviews-year-archive', args=(year,)))
    

    여섯.네임스페이스
    방법 1:
    #  reviews.urls      URL          reviews  ,         author-reviews 
    url(r'^reviews/', include('reviews.urls',namespace='author-reviews',app_name='reviews')),

    방법 2:
    from django.conf.urls import include, url
    from . import views
    
    reviews_patterns = [
        url(r'^$', views.IndexView.as_view(), name='index'),
        url(r'^(?P\d+)/$', views.DetailView.as_view(), name='detail'),]
    
    url(r'^reviews/', include((reviews_patterns, 'reviews', 'author-reviews'))),
    

    네임스페이스 데이터를 포함하는 대상을 도입합니다.include () 를 사용하여 url () 실례를 도입하면, 그 대상의 URL은 전역 이름 공간에 추가됩니다.위 코드는 지정된 URL 모드를 지정된 응용 프로그램 및 인스턴스 네임스페이스로 가져옵니다.

    좋은 웹페이지 즐겨찾기