Beispielerklärung von Djangos FBV und CBV

不言
Freigeben: 2019-03-06 14:54:43
nach vorne
1935 Leute haben es durchsucht

Dieser Artikel bietet Ihnen eine beispielhafte Erklärung von Djangos FBV und CBV. Ich hoffe, dass er für Freunde in Not hilfreich ist.

FBV: Funktionsbasisansichten, bei denen Funktionen in Ansichten zur Bearbeitung von Anforderungen verwendet werden.

urlpatterns = [
    path('index/', views.index),
]
# 视图函数里
def index(request):
    return render(request,"index.html")
Nach dem Login kopieren

CBV: Klassenbasisansichten, bei denen Klassen in Ansichten verwendet werden, um Anfragen zu bearbeiten.

urlpatterns = [
    path("login/",views.LoginView.as_view())
]
# 视图函数里
class LoginView(View):

    def dispatch(self, request, *args, **kwargs):
        """
        重写dispatch方法, 可以放一些专属于LoginView的操作
        """
        return ...

    def get(self,request):
        return HttpResponse("OK")

    def post(self,request):
        return HttpResponse("OK")

    def put(self,request):
        return HttpResponse("OK")

    def delete(self,request):
        return HttpResponse("OK")
Nach dem Login kopieren

Quellcode-Analyse von CBV:

Djangos URL weist eine Anfrage einer aufrufbaren Funktion zu, nicht einer Klasse. Als Reaktion auf dieses Problem stellt die klassenbasierte Ansicht (d. h. die grundlegende View-Klasse von Django) eine statische Methode (d. h. eine Klassenmethode) von as_view() bereit. Durch den Aufruf dieser Methode wird eine Klasse über self = cls(**) erstellt. initkwargs)-Instanz und rufen Sie dann die Methode „dispatch()“ über die Instanz auf. Die Methode „dispatch()“ ruft die entsprechende Methode auf, um die Anforderung zu verarbeiten (z. B. „get()“, „post()“ usw.). die Anfrage. Zu diesem Zeitpunkt sind diese Methoden fast identisch mit funktionsbasierten Ansichten. Sie müssen Anfragen empfangen und eine Antwort erhalten. Wenn die Methode nicht definiert ist, wird eine HttpResponseNotAllowed-Ausnahme ausgelöst.

Warum gibt es ein CBV-Modell?

Ein wichtiges Merkmal von Python ist die Objektorientierung. Und cbv kann die objektorientierte Natur von Python besser widerspiegeln. cbv implementiert Ansichtsmethoden über Klassen. Im Vergleich zur Funktion können Klassen die Besonderheiten des Polymorphismus besser nutzen (Polymorphismus: Dieselbe Operation kann auf Objekte unterschiedlichen Typs angewendet werden), sodass es einfacher ist, die häufigeren Funktionen im Projekt von der Makroebene aus zu abstrahieren.

Das obige ist der detaillierte Inhalt vonBeispielerklärung von Djangos FBV und CBV. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:cnblogs.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!