[PYTHON] DJango Hinweis: Von Anfang an (mit einer generischen Ansicht)

In der Allzweckansicht können Sie Seiten erstellen, die noch kürzer als Verknüpfungen sind. http://docs.djangoproject.jp/en/latest/ref/generic-views.html

Ich habe bisher viel in views.py geschrieben, aber mit einer generischen Ansicht können Sie es abschneiden.

Bearbeiten Sie urls.py auf der Anwendungsseite wie folgt.

polls/urls.py ######

from django.conf.urls import patterns, include, url
from django.views.generic import DetailView, ListView
from polls.models import Poll

urlpatterns = patterns('',	#Vergessen Sie nicht, den leeren Zustand wiederherzustellen
    url(r'^$',
        ListView.as_view(
            queryset=Poll.objects.order_by('-pub_date')[:5],
            context_object_name='latest_poll_list',
            template_name='polls/index.html'
		)
	),
    url(r'^(?P<pk>\d+)/$',
        DetailView.as_view(
            model=Poll,
            template_name='polls/detail.html'
		)
	),
    url(r'^(?P<pk>\d+)/results/$',
        DetailView.as_view(
            model=Poll,
            template_name='polls/results.html'
		),
        name='poll_results'
	),
    url(r'^(?P<poll_id>\d+)/vote/$', 'polls.views.vote'),
)

Hier werden ListView und DetailView angezeigt.

Zunächst einmal gemeinsam, bis jetzt auf der views.py-Seite

# def index..
	temp = loader.get_template('polls/index.html')

Und

	return render_to_response('polls/detail.html',{	#..

Die Vorlage wurde in der Funktion wie folgt angegeben:

# url(..
	# SomeView.as_view(..
		template_name = 'polls/index.html'

Durch einen Satz ersetzen. Jede Vorlage wird direkt in URLconf angegeben. Wenn Sie dies nicht angeben, scheint "appName / modelName_detail.html" der Standardname zu sein, es ist jedoch nicht sinnvoll, eine Vorlage mit diesem Dateinamen zu erstellen. Insbesondere in diesem Beispiel wird der Vorlagenname durch Details und Ergebnisse beschlagen, sodass er definitiv nicht gut ist.

Schauen wir uns als nächstes jede Art von Allzweckansicht an.

Zuerst ListView.

--queryset: Geben Sie die Daten ein, die Sie in der Liste (Array) anzeigen möchten.

--context_object_name: Geben Sie den Namen des Abfragesatzes an (falls nicht angegeben, ist der Name modelName_list der Standard). In den bisher erstellten Vorlagen lautete der empfangene Name "latest_poll_list", daher habe ich ihn geändert (das Ergebnis ist das gleiche, auch wenn ich den Namen auf der Vorlagenseite bearbeite).

DetailView。 #####

Beachten Sie zunächst, dass sich das erste Argument der URL geringfügig geändert hat.

# before
	r'^(?P<poll_id>\d+)/$'
# after
	r'^(?P<pk>\d+)/$'

Die Daten mit "\ d +" (eine oder mehrere Ziffern) als pk (PrimaryKey) werden in der Vorlage wiedergegeben. Pk hier ist ein Klischee. Es scheint eine Schnecke zu geben, aber ich bin mir im Moment nicht sicher.

--model: So wie es ist, wird die Modellklasse angegeben.

--name: Sie haben einen Namen für die Ansicht festgelegt. Es scheint, dass eine URL, die diese Ansicht aufruft, automatisch generiert werden kann (benanntes Muster?).

Die Bearbeitung der URLconf ist nun abgeschlossen. Und wenn Sie es bisher getan haben

Sie benötigen die Index-, Detail- und Ergebnisfunktionen von views.py nicht mehr.

Es ist in Ordnung, es zu löschen. Lassen wir jedoch nur die Abstimmung. Und bearbeiten Sie nur eine Zeile wie folgt.

views.py ######

#def vote..
	return HttpResponseRedirect( reverse('poll_results', args=(pobject.id,)) )

Das erste Argument der Umkehrung wurde von "polls.views.results" in "poll_results" geändert. Dies ist der Name der Ergebnisseite, die Sie zuvor festgelegt haben, und umgekehrt scheint automatisch eine URL gemäß der Ansicht von hier zu generieren.

Damit ist die Umstellung auf die Allzweckansicht abgeschlossen.

Wenn Sie den Vorgang überprüfen, können Sie feststellen, dass er genauso funktioniert wie Letztes Mal. Das ist natürlich einfacher.

Das Tutorial ist übrigens vorbei.

Vorerst möchte ich es mit dem Buch überprüfen, auf das ich im letzten Beitrag DJango Memo: Grundlagen der Blog-Erstellung verwiesen habe, und es gleichzeitig erneut versuchen.

Und das nächste Ziel ist es, es auf Heroku zu veröffentlichen.

Recommended Posts

DJango Hinweis: Von Anfang an (mit einer generischen Ansicht)
DJango Hinweis: Von Anfang an (Erstellen einer Ansicht aus einer Vorlage)
DJango Memo: Von Anfang an (Erstellen einer Ansicht)
DJango Hinweis: Von Anfang an (Formularverarbeitung)
DJango Hinweis: Von Anfang an (Vereinfachung und Aufteilung von URLConf)
DJango-Memo: Von Anfang an (über den Verwaltungsbildschirm) mein Suchtpunkt
Ajax in Django (mit generischer Klassenansicht)
DJango-Memo: Von Anfang an (Bearbeiten des Verwaltungsbildschirms) Es gibt ein Rätsel
Führen Sie Python-Dateien mit Django aus HTML aus
DJango Memo: Von Anfang an (Fehlerbildschirmeinstellung)
[CRUD] [Django] Erstellen Sie eine CRUD-Site mit dem Python-Framework Django ~ 1 ~
[CRUD] [Django] Erstellen Sie eine CRUD-Site mit dem Python-Framework Django ~ 2 ~
Studie aus Python Hour8: Verwenden von Paketen
[CRUD] [Django] Erstellen Sie eine CRUD-Site mit dem Python-Framework Django ~ 3 ~
[CRUD] [Django] Erstellen Sie eine CRUD-Site mit dem Python-Framework Django ~ 4 ~
[CRUD] [Django] Erstellen Sie eine CRUD-Site mit dem Python-Framework Django ~ 5 ~
Erstellen Sie eine Shogi Score Management App mit Django 4 ~ Create View ~
Die Geschichte des Django-Modellfeldes verschwindet aus der Klasse
So generieren Sie eine Abfrage mit dem IN-Operator in Django
DJango Memo: Von Anfang an (weitere Änderungen am Verwaltungsbildschirm)
Erstellen Sie eine einfache CRUD-App mit der generischen Klassenansicht von Django
Suchen Sie mit Pythonista3 nach einem Bild von der Kamerarolle
Django: Klasse aus String importieren
[Hinweis] Verwenden eines 16x2-stelligen LCD-Zeichens (1602A) von Python mit Raspeye
Versuchen Sie es mit Pythons Webframework Django (1) - Von der Installation bis zum Serverstart
So finden Sie den Ansichtsnamen mit dem Namespace über die URL (path_info) in Django
Erhalten Sie Nachrichten von jedem der drei großen Mobilfunkunternehmen mithilfe von Django und der Nachrichten-API
Ein nützlicher Hinweis, wenn Sie Python nach langer Zeit verwenden
So erstellen Sie eine Anwendung aus der Cloud mithilfe des Django-Webframeworks
Verwenden Sie boto, um die Datei von S3 herunterzuladen.
Notizen vom Anfang von Python 1 lernen
Lassen Sie die Stückliste am Anfang der Zeichenfolge weg
Erstellen Sie mit dem Sympy-Modul ein Diagramm
Holen Sie sich ein Referenzmodell mit Django Serializer
Hinweise zum Aktivieren von PostgreSQL mit Django
Verwenden Sie Django aus einem lokalen Python-Skript
Erstellen Sie mit Pandas einen Datenrahmen aus Excel
Fügen Sie mithilfe des Keras-Backends eine Ebene hinzu
Notizen vom Anfang von Python 2 lernen
Holen Sie sich nur den Text aus dem Django-Formular.
Ein Memo, dass ich das Pyramid Tutorial ausprobiert habe
Django Note 4
So identifizieren Sie die Zugriffsquelle in der generischen Klassenansicht von Django eindeutig
Django Note 5
[Django] Erstellen Sie ein Formular, das automatisch die Adresse aus der Postleitzahl ausfüllt
Verwendung des digitalen 1-Draht-Temperatursensors DS18B20 mit Raspberry Pi von Python
Django Note 1
Django Note 3
Django Note 2
Exklusive Veröffentlichung der Django App mit ngrok
Hinweise zum Anpassen der Diktatlistenklasse
Erstellen Sie mit ClustalW2 einen phylogenetischen Baum aus Biopyton
Schreiben Sie einen TCP-Server mit dem SocketServer-Modul
Schreiben Sie eine Notiz über die Python-Version von Python Virtualenv
Anzeigen von Arzneimittelbewertungen mithilfe von Listen in Python
Versuchen Sie, die Dateiansicht von TortoiseHg ein wenig zu ändern
Finden des Beginns der Avenomics anhand der NT-Vergrößerung 2
Django Tutorial Zusammenfassung für Anfänger von Anfängern ④ (Generic View)