django 클래스 보기
3054 단어 django
View
클래스 from django.views.generic import View
class PostView(View):
def get(self, request):
"""get : """
return render(request, 'post2.html')
def post(self, request):
"""post : """
#
return HttpResponse(' ')
as_view()
방법 설정 url urlpatterns = [
...
#
url(r'^post2$', views.PostView.as_view()),
]
1. 함수 보기에서 장식기 사용하기
수요: IP 블랙리스트 방문 금지 게시판 인터페이스 실현.해결: 보기 함수에서 장식기를 사용하여 다음과 같이 실현할 수 있다.
def check_ip(view_fun):
""" : ip """
def wrapper(request, *args, **kwargs):
# :
# ip
IP = request.META.get('REMOTE_ADDR')
if IP in ['192.168.210.160']:
return HttpResponse('IP ')
return view_fun(request, *args, **kwargs)
return wrapper
@check_ip
def post(request):
"""GET : """
return render(request, 'post.html')
또는: URL에 방법 호출을 통해 장식기를 추가할 수도 있음 urlpatterns = [
...
#
url(r'^post$', check_ip(views.post))
]
2. 클래스 보기 사용 장식기
(1) 루트에 장식기 추가
예를 들어 다음과 같이 장식기를 루트에 추가하면 클래스 보기에서 모든 방법이 장식기를 사용하지만 읽을 수 없어서 사용을 권장하지 않습니다.
urlpatterns = [
...
#
url(r'^post2$', check_ip(views.PostView.as_view()))
]
(2) 클래스 보기 방법에 추가
(1) 클래스 보기의 특정한 방법에 장식기를 추가합니다.
class PostView(View):
def get(self, request):
return render(request, 'post2.html')
@method_decorator(check_ip)
def post(self, request):
return HttpResponse(' ')
(2) 클래스 뷰의 모든 방법에 장식기를 적용합니다.
class PostView(View):
@method_decorator(check_ip)
def dispatch(self, request, *args, **kwargs):
return super().dispatch(request, *args, **kwargs)
def get(self, request):
return render(request, 'post2.html')
(3) 또 다른 장식기 추가 방식: 클래스에 장식기를 추가하고 어떤 방법으로 장식할지 지정
@method_decorator(check_ip, name='get')
class PostView(View):
def get(self, request):
return render(request, 'post2.html')
def post(self, request):
return HttpResponse(' ')
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Django의 질문 및 답변 웹사이트환영 친구, 이것은 우리의 새로운 블로그입니다. 이 블로그에서는 , 과 같은 Question-n-Answer 웹사이트를 만들고 있습니다. 이 웹사이트는 회원가입 및 로그인이 가능합니다. 로그인 후 사용자는 사용자의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.