English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In einigen Fällen ist der Code für Ansichten schreiben wirklich mühsam, wie wir es gesehen haben. Stellen Sie sich vor, Sie benötigen nur eine statische Seite oder eine Listenseite. Django bietet auch eine einfache Methode, um diese einfachen Ansichten zu konfigurieren, die als generische Ansichten bezeichnet werden.
Unterschiedlich von traditionellen Ansichten ist eine allgemeine Ansicht eine Klasse, aber hat keine Funktionen. Django bietet auch eine Reihe von Klassen django.views.generic generische Ansichten, und jede allgemeine Ansicht ist von diesen Klassen oder von einer dieser Klassen abgeleitet.
Es gibt10+Generische Klasse −
# Dateiname : example.py # Urheberrecht : 2020 Durch w3codebox # Autor durch : de.oldtoolbag.com # Datum : 2020-08-08 >>> import django.views.generic >>> dir(django.views.generic) ['ArchiveIndexView', 'CreateView', 'DateDetailView', 'DayArchiveView', 'DeleteView', 'DetailView', 'FormView', 'GenericViewError', 'ListView', 'MonthArchiveView', 'RedirectView', 'TemplateView', 'TodayArchiveView', 'UpdateView', 'View', 'WeekArchiveView', 'YearArchiveView', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', 'base', 'dates', 'detail', 'edit', 'list'
Sie können generische Ansichten verwenden. Lassen Sie uns einige Beispiele betrachten, um zu sehen, wie es funktioniert.
Lassen Sie uns die statische Seite von "static.html"-Template veröffentlichen.
Unser static.html −
# Dateiname : example.py # Urheberrecht : 2020 Durch w3codebox # Autor durch : de.oldtoolbag.com # Datum : 2020-08-08 <html> <body> Dies ist eine statische Seite!!! </body> </html>
Wenn wir das so tun, wie wir es gelernt haben, müssten wir myapp ändern/views.py −
# Dateiname : example.py # Urheberrecht : 2020 Durch w3codebox # Autor durch : de.oldtoolbag.com # Datum : 2020-08-08 from django.shortcuts import render def static(request): return render(request, 'static.html', {})
myapp/urls.py wird wie folgt sein -
# Dateiname : example.py # Urheberrecht : 2020 Durch w3codebox # Autor durch : de.oldtoolbag.com # Datum : 2020-08-08 from django.conf.urls import patterns, url /', 第28段
Der beste Weg ist es, generische Ansichten zu verwenden. Für diesen Zweck, unser myapp/views.py wird wie folgt werden -
# Dateiname : example.py # Urheberrecht : 2020 Durch w3codebox # Autor durch : de.oldtoolbag.com # Datum : 2020-08-08 from django.views.generic import TemplateView class StaticView(TemplateView): template_name = "static.html"
Unser myapp/urls.py wird wie folgt sein -
# Dateiname : example.py # Urheberrecht : 2020 Durch w3codebox # Autor durch : de.oldtoolbag.com # Datum : 2020-08-08 from myapp.views import StaticView from django.conf.urls import patterns urlpatterns = patterns("myapp.views", url(r'^static/, StaticView.as_view()),)
wenn auf /myapp/static wird -
Für das gleiche Ergebnis können wir auch die folgenden Aktionen ausführen -
Es ist nicht erforderlich, views.py zu ändern Ändere url.py-Datei -
# Dateiname : example.py # Urheberrecht : 2020 Durch w3codebox # Autor durch : de.oldtoolbag.com # Datum : 2020-08-08 from django.views.generic import TemplateView from django.conf.urls import patterns, url urlpatterns = patterns("myapp.views", /', 第10段
Wie du siehst, musst du nur die zweite Methode in der url.py-Datei ändern.
urls.py aufrufen und aktualisieren, um alle Einträge im Dreamreal-Modell aufzulisten. Dies macht die Verwendung der generischen Ansicht ListView einfach. -
# Dateiname : example.py # Urheberrecht : 2020 Durch w3codebox # Autor durch : de.oldtoolbag.com # Datum : 2020-08-08 from django.views.generic import ListView from django.conf.urls import patterns, url "myapp.views", url(r'^dreamreals /', 第4段 template_name = "dreamreal_list.html")),
Es ist wichtig zu beachten, dass an diesem Punkt die Variable durch eine generische Ansicht in ein Template von object_list geleitet wird. Wenn du deinen Namen verwenden möchtest, musst du einen context_object_name-Parameter zu der as_view-Methode hinzufügen. Dann wird url.py -
# Dateiname : example.py # Urheberrecht : 2020 Durch w3codebox # Autor durch : de.oldtoolbag.com # Datum : 2020-08-08 from django.views.generic import ListView from django.conf.urls import patterns, url urlpatterns = patterns("myapp.views", url(r'^dreamreals/', ListView.as_view( template_name = "dreamreal_list.html")), model = Dreamreal, context_object_name = "dreamreals_objects",)
然后关联的模板将成为 −
# Dateiname : example.py # Urheberrecht : 2020 Durch w3codebox # Autor durch : de.oldtoolbag.com # Datum : 2020-08-08 {% extends "main_template.html" %} {% block content %} Dreamreals:<p> {% for dr in object_list %} {{dr.name}}</p> {% endfor %} {% endblock %}
访问 /myapp/dreamreals/ 将产生如下页面 −