๋ฐ์ฝ๋ ์ดํฐ๋ ์กฐ๊ฑด์ด ์ถฉ์กฑ๋์ง ์์ผ๋ฉด django.http.HttpResponseNotAllowed
๋ฐํ
require_http_methods(request_method_list)
: ๋ทฐ๊ฐ ํน์ ์์ฒญ ๋ฉ์๋๋ง ํ์ฉํ๋๋ก ์๊ตฌ
require_GET()
: ๋ทฐ๊ฐ GET ๋ฉ์๋๋ง ํ์ฉํ๋๋ก ์๊ตฌ
require_POST()
: ๋ทฐ๊ฐ POST ๋ฉ์๋๋ง ํ์ฉํ๋๋ก ์๊ตฌ
require_safe()
: ๋ทฐ๊ฐ GET ๋ฐ HEAD ๋ฉ์๋๋ง ํ์ฉํ๋๋ก ์๊ตฌ
user_passes_test
: ์ง์ ํจ์๊ฐ False๋ฅผ ๋ฐํํ๋ฉด login_url๋ก redirect
login_required
: ๋ก๊ทธ์์ ์ํฉ์์ login_url๋ก redirect
permission_required
: ์ง์ ํผ๋ฏธ์
์ด ์์ ๋ login_url๋ก redirect
staff_member_required
: staff member๊ฐ ์๋ ๊ฒฝ์ฐ login_url๋ก ์ด๋from django.contrib.auth.decorators import login_required
from django.shortcuts import render
#๋ฐฉ๋ฒ 1
@login_required
def post_create(request):
return render(request, 'core/index.html')
#๋ฐฉ๋ฒ 2
def post_create(request):
return render(request, 'core/index.html')
post_create = login_required(post_create)
as_view
๋ฅผ ์ด์ฉํด ํจ์๋ฅผ ๋ง๋ ํ ํจ์๋ฅผ ๊ฐ์ธ์คfrom django.contrib.auth.decorators import login_required
from django.views.generic import TemplateView
class MyTemplateView(TemplateView):
template_name = 'core/index.html'
index = MyTemplate.as_view()
index = login_required(index)
dispatch
ํจ์ ์ฌ์ฉdispatch
๋ ํด๋์ค๊ฐ ์๋ก์ด ํจ์๋ฅผ ๋ง๋ค ๋ ๋ง๋ค ํญ์ ์คํ๋๋ ํจ์dispatch
์ ์๋ก์ด ๋ด์ฉ์ ์ถ๊ฐํ๋ ๊ฒ ์๋๋ฐ ์ฌ์ ์ํ๊ธฐ ๋๋ฌธ์ ๊ฐ๋
์ฑ ๋จ์ด๋จ๋ฆผfrom django.utils.decorators import method_decorator
class MyTemplateView(TemplateView):
template_name = 'core/index.html'
@method_decorator(login_required)
def dispatch(self, *args, **kwargs):
return super().dispatch(*args, **kwargs)
index = MyTmeplateView.as_view()
@method_decorator
์ name
์ง์ ํด ํด๋์ค ๋ฉ์๋์ ๋ํด decorator ์ฌ์ฉํ๊ธฐ@method_decorator(login_required, name='dispatch')
class MyTemplateView(TemplateView):
template_name = 'core/index.html'
index = MyTemplateView.as_view()