English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
ある場合には、ビューのコードを書くのは非常に重労働です。たとえば、静的ページやリストページだけが必要な場合を想像してみましょう。Djangoは、これらのシンプルなビューを設定するための簡単な方法を提供しており、これを泛型ビューと呼びます。
従来のビューとは異なり、一般的なビューはクラスですが、関数を持っていません。Djangoはまた、django.views.genericと呼ばれる一般的なビューを提供しており、各一般的なビューはこれらのクラスのいずれかから派生しています。
有10+泛型クラス−
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ja.oldtoolbag.com # Date : 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'
泛型ビューを使用できます。いくつかの例を見て、それがどのように動作するかを見てみましょう。
「static.html」テンプレートから静的ページを公開しましょう。
私たちの static.html −
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ja.oldtoolbag.com # Date : 2020-08-08 <html> <body> This is a static page!!! </body> </html>
もしこれを行うと、以前学んだ方法で、myappを変更せざるを得なくなります。/views.py −
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ja.oldtoolbag.com # Date : 2020-08-08 from django.shortcuts import render def static(request): return render(request, 'static.html', {})
myapp/urls.pyは以下のようになります −
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ja.oldtoolbag.com # Date : 2020-08-08 from django.conf.urls import patterns, url urlpatterns = patterns("myapp.views", url(r'^static/「static」, name='static'),)
最善の方法は、泛型ビューを使用することです。この点で、私たちのmyapp/views.pyは以下のようになります −
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ja.oldtoolbag.com # Date : 2020-08-08 from django.views.generic import TemplateView class StaticView(TemplateView): template_name = "static.html"
そして、私たちのmyapp/urls.pyは以下のようになります −
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ja.oldtoolbag.com # Date : 2020-08-08 from myapp.views import StaticView from django.conf.urls import patterns urlpatterns = patterns("myapp.views", (r'^static/、StaticView.as_view()),) ,StaticView.as_view()),)
アクセスしたときに /myapp/staticは以下になります −
同じ結果を得るために、以下の操作を実行することもできます −
views.pyファイルは変更しない必要はありません url.pyファイルを変更します -
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ja.oldtoolbag.com # Date : 2020-08-08 from django.views.generic import TemplateView from django.conf.urls import patterns, url urlpatterns = patterns("myapp.views", url(r'^static/「TemplateView.as_view(template_name='static.html')),)
あなたが見たように、url.pyファイルの2番目のメソッドを変更するだけで十分です。
Dreamrealモデルのすべてのエントリをリストアップする必要があります。ListViewの泛型ビュークラスを使用するのは簡単です。url.pyファイルを編集し、更新してください -
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ja.oldtoolbag.com # Date : 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(model=Dreamreal, template_name = "dreamreal_list.html")), )
ここでは、変数が泛型ビューからobject_listテンプレートに通ることに注意する必要があります。自分の名前を使いたい場合は、as_viewメソッドにcontext_object_nameパラメータを追加する必要があります。その後、url.pyが -
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ja.oldtoolbag.com # Date : 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",)
関連するテンプレートは以下のようになります -
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ja.oldtoolbag.com # Date : 2020-08-08 {% extends "main_template.html" %} {% block content %} Dreamreals:<p> {% for dr in object_list %} {{dr.name}}</p> {% endfor %} {% endblock %}
アクセス /myapp/dreamreals/ 以下のページが生成されます -