본문 바로가기

WebDev

django class-based view

django class-based view


class-based view는 urls.py에서 즉석으로 뷰를 만들어 url을 등록하는데 활용될 수 있다.


TemplateView


간단하게 아래의 예를 보자

from django.conf.urls import url
from django.views.generic import TemplateView

urlpatterns = [
    url(r'^about/', TemplateView.as_view(template_name="about.html")),
]

그냥 아무것도 아닌 간단한 html을 등록하는데 view를 만들기도 귀찮다. 이럴 땐 이렇게 TemplateView가 적격이다.



RedirectView


from django.conf.urls import url
from django.views.generic.base import RedirectView

from article.views import ArticleCounterRedirectView, ArticleDetail

urlpatterns = [
    url(r'^go-to-django/$', RedirectView.as_view(url='https://djangoproject.com'), name='go-to-django'),
]


리다이렉션을 간단하게 구현 가능하다.




권한 요구


당연한 이야기지만, 특정 뷰를 보는데 권한이 필요할 수 있다. 그럴땐 아래와 같이 하자

from django.contrib.auth.decorators import login_required, permission_required
from django.views.generic import TemplateView

from .views import VoteView

urlpatterns = [
    url(r'^about/', login_required(TemplateView.as_view(template_name="secret.html"))),
    url(r'^vote/', permission_required('polls.can_vote')(VoteView.as_view())),
]

login_required를 사용해 django login을 요구하거나

permission_required를 사용해 나만의 permission을 요구할 수 있다.




'WebDev' 카테고리의 다른 글

django login 정리  (0) 2016.01.21
django CSRF disable (CSRF 해제)  (0) 2016.01.20
Django Url  (0) 2016.01.14
Django Deploy  (0) 2016.01.04
Django Multiple Database  (0) 2015.11.16