[PYTHON] Remarque DJango: depuis le début (en utilisant une vue générique)

La vue à usage général vous permet de créer des pages encore plus courtes que les raccourcis. http://docs.djangoproject.jp/en/latest/ref/generic-views.html

J'ai beaucoup écrit dans views.py jusqu'à présent, mais avec une vue générique, vous pouvez le raser.

Modifiez urls.py côté application comme suit.

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('',	#N'oubliez pas de le remettre à l'état vide
    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'),
)

Ici, ListView et DetailView sont affichés.

Tout d'abord, en commun, jusqu'à présent, du côté views.py

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

Et

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

Le modèle a été spécifié dans la fonction comme ceci,

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

Remplacez par une phrase. Chaque modèle est spécifié directement dans URLconf. Si vous ne le spécifiez pas, "appName / modelName_detail.html" semble être le nom par défaut, mais il n'est pas bon de créer un modèle avec ce nom de fichier. Surtout dans cet exemple, le nom du modèle est embrouillé par les détails et les résultats, donc ce n'est certainement pas bon.

Ensuite, regardons chaque type de vue à usage général.

Tout d'abord, ListView.

--queryset: saisissez les données que vous souhaitez afficher dans la liste (tableau).

--context_object_name: spécifiez le nom de l'ensemble de requêtes (s'il n'est pas spécifié, le nom modelName_list est le nom par défaut). Dans les modèles créés jusqu'à présent, le nom reçu était "latest_poll_list", donc je l'ai changé (le résultat est le même même si je modifie le nom du côté du modèle).

DetailView。 #####

Tout d'abord, notez que le premier argument d'url a légèrement changé.

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

Les données avec «\ d +» (un ou plusieurs chiffres) comme pk (PrimaryKey) sont reflétées dans le modèle. Pk voici un cliché. Il semble y avoir une limace, mais je ne suis pas sûr pour le moment.

--model: En l'état, la classe de modèle est spécifiée.

--name: vous avez défini un nom pour la vue. Il semble qu'une URL qui appelle cette vue puisse être générée automatiquement (modèle nommé?).

La modification d'URLconf est maintenant terminée. Et si tu l'as fait jusqu'ici

Vous n'avez plus besoin des fonctions d'index, de détail et de résultats de views.py.

Vous pouvez l'effacer. Cependant, ne laissons que voter. Et modifiez une seule ligne comme suit.

views.py ######

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

Le premier argument de reverse a été changé de "polls.views.results" à "poll_results". C'est le nom de la page de résultats que vous avez définie précédemment, et l'inverse semble générer automatiquement une URL en fonction de la vue d'ici.

Ceci termine le passage à la vue générale.

Si vous vérifiez l'opération, vous pouvez voir qu'elle fonctionne exactement de la même manière que Dernière fois. C'est évidemment plus facile.

Au fait, le tutoriel est terminé.

Pour le moment, j'aimerais le revoir avec le livre auquel j'ai fait référence dans le post précédent DJango Memo: Basics of Blog Creation et réessayer en même temps.

Et le prochain objectif est de le publier sur heroku.

Recommended Posts

Remarque DJango: depuis le début (en utilisant une vue générique)
Remarque DJango: depuis le début (création d'une vue à partir d'un modèle)
DJango Memo: depuis le début (création d'une vue)
Remarque DJango: depuis le début (traitement de formulaire)
Remarque DJango: depuis le début (Simplification et fractionnement d'URLConf)
Mémo DJango: Depuis le début (en utilisant l'écran de gestion) mon point addictif
Ajax dans Django (en utilisant la vue de classe générique)
Mémo DJango: Depuis le début (édition de l'écran de gestion) Il y a un mystère
Exécutez des fichiers Python à partir de HTML en utilisant Django
DJango Memo: depuis le début (réglage de l'écran d'erreur)
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 1 ~
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 2 ~
Étude de Python Hour8: Utilisation de packages
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 3 ~
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 4 ~
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 5 ~
Créez une application de gestion de partition shogi à l'aide de Django 4 ~ Créer une vue ~
L'histoire du champ de modèle Django disparaissant de la classe
Comment générer une requête à l'aide de l'opérateur IN dans Django
DJango Memo: depuis le début (plus de modifications sur l'écran de gestion)
Créez une application CRUD simple en utilisant la vue de classe générique de Django
Recherche par image de la pellicule en utilisant Pythonista3
Django: Importer une classe depuis une chaîne
[Remarque] Utilisation d'un écran LCD à 16 caractères à 2 chiffres (1602A) de Python avec Raspeye
Essayez d'utiliser le framework web de Python Django (1) - De l'installation au démarrage du serveur
Pour trouver le nom de la vue avec l'espace de noms à partir de l'URL (path_info) dans Django
Recevez des nouvelles de chacune des trois principales entreprises de téléphonie mobile en utilisant Django et l'API News
Une note utile lors de l'utilisation de Python après une longue période
Comment créer une application à partir du cloud à l'aide du framework Web Django
Utilisez boto pour télécharger le fichier depuis S3.
Notes d'apprentissage depuis le début de Python 1
Omettre la nomenclature depuis le début de la chaîne
Créer un graphique à l'aide du module Sympy
Obtenir un modèle de référence à l'aide de Django Serializer
Remarques sur l'activation de PostgreSQL avec Django
Utiliser Django à partir d'un script Python local
Créer un bloc de données à partir d'Excel à l'aide de pandas
Ajouter une couche à l'aide du backend Keras
Notes d'apprentissage depuis le début de Python 2
Récupérez uniquement le texte du formulaire Django.
Un mémo que j'ai essayé le tutoriel Pyramid
Django Note 4
Comment identifier de manière unique la source d'accès dans la vue de classe générique Django
Django Note 5
[Django] Créez un formulaire qui remplit automatiquement l'adresse à partir du code postal
Utilisation du capteur de température numérique à 1 fil DS18B20 avec Raspberry Pi de Python
Django Note 1
Django Note 3
Django Note 2
Sortie exclusive de l'application Django utilisant ngrok
Remarques sur la personnalisation de la classe de liste de dict
Créer un arbre phylogénétique à partir de Biopyton en utilisant ClustalW2
Ecrire un serveur TCP à l'aide du module SocketServer
Écrire une note sur la version python de python virtualenv
Afficher les avis sur les médicaments à l'aide de listes en Python
Essayez de modifier un peu la vue du fichier de TortoiseHg
Trouver le début de l'avenomics à partir du grossissement NT 2
Résumé du didacticiel Django pour les débutants par les débutants ④ (Vue générique)