Django fbv 및 cbv 개요
예를 들면 다음과 같습니다.
def user_info(request):
    if request.method == "GET":
        user_list = models.UserInfo.objects.all()
        group_list = models.UserGroup.objects.all()
        return render(request, 'user_info.html', {'user_list': user_list, "group_list": group_list})
    elif request.method == 'POST':
        u = request.POST.get('user')
        p = request.POST.get('pwd')
        models.UserInfo.objects.create(username=u,password=p)
        return redirect('/cmdb/user_info/')또 다른 방식은 CBV(class based view)라고 합니다.이 방식은 보기 클래스를 가져와야 합니다. 사용자 정의 하위 클래스를 통해 이 클래스를 계승할 수 있습니다. 보기 안의 디스패치 () 방법을 이용하여 요청이 get인지post인지 판단할 수 있습니다.dispatch 방법의 본질은 반사기로서 이름에 따라 동명의 방법을 호출할 수 있다.
View 클래스의 일부 코드는 디스패치가 반사로 목록에 있는 방법 이름을 가져옵니다
  http_method_names = ['get', 'post', 'put', 'patch', 'delete', 'head', 'options', 'trace']
  def dispatch(self, request, *args, **kwargs):
        # Try to dispatch to the right method; if a method doesn't exist,
        # defer to the error handler. Also defer to the error handler if the
        # request method isn't on the approved list.
        if request.method.lower() in self.http_method_names:
            handler = getattr(self, request.method.lower(), self.http_method_not_allowed)
        else:
            handler = self.http_method_not_allowed
        return handler(request, *args, **kwargs)CBV의 예는 다음과 같다.
여기에 하위 클래스에서 디스패치라는 방법을 새롭게 정의하고 슈퍼()를 사용하여 부 클래스의 구조 방법을 호출하는 것이 좋다. 이런 장점은 기능은 변하지 않지만 새로운 기능을 유연하게 추가할 수 있다는 것이다.
from django.views import View
class Home(View):
    def dispatch(self, request, *args, **kwargs):
        #       dispatch
        print('before')
        result = super(Home,self).dispatch(request, *args, **kwargs)
        print('after')
        return result
        
    def get(self,request):
        print(request.method)
        return render(request, 'home.html')
        
    def post(self,request):
        print(request.method,'POST')
        return render(request, 'home.html')사용자 정의 클래스 안의 방법을 호출하기 위해서 URL 안에서View 클래스의 as 를 호출해야 합니다view () 방법을 입구로 합니다.
예컨대
# urls.py
from django.conf.urls import url
from myapp.views 
import MyView
urlpatterns = [
    
    url(r'^about/', MyView.as_view()),
]이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Django의 질문 및 답변 웹사이트환영 친구, 이것은 우리의 새로운 블로그입니다. 이 블로그에서는 , 과 같은 Question-n-Answer 웹사이트를 만들고 있습니다. 이 웹사이트는 회원가입 및 로그인이 가능합니다. 로그인 후 사용자는 사용자의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.