Au cours des deux dernières semaines, j'ai travaillé sur la configuration de Django à partir de zéro et sur la création d'une application de sondage simple. Cet article vous expliquera tout ce que j'ai fait, depuis l'installation de Python et Django, la configuration d'un environnement virtuel, la création d'un nouveau projet et la création d'une application fonctionnelle appelée sondages.
1. Configuration de Python et Django
Pour commencer, je me suis assuré que Python était installé sur mon système. Si vous ne l'avez pas encore installé, vous pouvez le télécharger depuis python.org.
Étape 1 : Installer Python et configurer un environnement virtuel
Je voulais garder les dépendances de mon projet isolées, j'ai donc utilisé un environnement virtuel.
# Install virtualenv if you don't have it pip install virtualenv # Create a virtual environment virtualenv myenv # Activate the environment # On Windows: myenv\Scripts\activate # On macOS/Linux: source myenv/bin/activate
Étape 2 : Installer Django
Une fois l'environnement activé, j'ai installé Django.
pip install django
J'ai ensuite confirmé l'installation en exécutant :
django-admin --version
2. Démarrer un nouveau projet Django : monsite
Il était maintenant temps de créer mon projet Django. J'ai décidé de l'appeler monsite.
django-admin startproject mysite cd mysite
Cela a créé la structure de base d'un projet Django avec des paramètres et des configurations.
3. Création d'une nouvelle application Django : sondages
Après avoir configuré le projet, j'ai créé une nouvelle application appelée sondages, qui contiendrait toute la logique et les vues de mon application de sondage.
python manage.py startapp polls
J'ai ajouté la nouvelle application à INSTALLED_APPS dans mysite/settings.py :
INSTALLED_APPS = [ # other installed apps 'polls', ]
4. Définir les modèles
J'ai commencé par définir deux modèles : Question et Choix. Une question a un texte de question et une date de publication, tandis qu'un choix a une référence à une question et stocke le texte ainsi qu'un décompte des votes.
Voici le fichier models.py dans l'application de sondages :
# models.py import datetime from django.db import models from django.contrib import admin from django.utils import timezone class Question(models.Model): question_text = models.CharField(max_length=200) pub_date = models.DateTimeField('date published') def __str__(self): return self.question_text @admin.display( boolean=True, ordering='pub_date', description='Published recently?', ) def was_published_recently(self): now = timezone.now() return now - datetime.timedelta(days=1)5. Création de la base de données et exécution des migrations
Ensuite, j'ai créé la base de données et appliqué les migrations :python manage.py migrateJ'ai ensuite créé des fichiers de migration pour l'application de sondages :
python manage.py makemigrations polls python manage.py migrate6. Écriture de vues pour l'application Poll
J'ai écrit plusieurs vues pour gérer l'affichage d'une liste de questions, l'affichage des détails des questions et l'affichage des résultats du vote. Ces vues sont basées sur les classes et utilisent les vues génériques intégrées de Django.
Création de vues pour les sondages
J'ai ensuite créé les vues qui contrôlent la façon dont les données sont affichées à l'utilisateur. J'ai utilisé les vues génériques de Django pour garder les choses simples.Voici le fichier vues.py :
# views.py from django.http import HttpResponse from django.shortcuts import get_object_or_404, render from django.urls import reverse from django.views import generic from django.utils import timezone from .models import Question, Choice class IndexView(generic.ListView): template_name = 'polls/index.html' context_object_name = 'latest_question_list' def get_queryset(self): """Return the last five published questions.""" return Question.objects.order_by('-pub_date')[:5] class DetailView(generic.DetailView): model = Question template_name = 'polls/detail.html' def get_queryset(self): """Exclude questions that aren't published yet.""" return Question.objects.filter(pub_date__lte=timezone.now()) class ResultsView(generic.DetailView): model = Question template_name = 'polls/results.html' def vote(request, question_id): return HttpResponse(f"You're voting on question {question_id}.")
7. Configuration des URL
J'ai ajouté des modèles d'URL au fichier urls.py dans l'application de sondages pour lier chaque vue à une URL spécifique.
# urls.py from django.urls import path from . import views app_name = 'polls' urlpatterns = [ path('', views.IndexView.as_view(), name='index'), path('/', views.DetailView.as_view(), name='detail'), path(' /results/', views.ResultsView.as_view(), name='results'), path(' /vote/', views.vote, name='vote'), ]
8. Création de modèles pour les vues
Enfin, j'ai créé des modèles HTML pour afficher les questions et les résultats. Les modèles sont placés dans le dossier polls/templates/polls/.
index.html
{% if latest_question_list %}
No polls are available.
{% endif %}detail.html
result.html
{{ question.question_text }}
Exécution de l'application
Pour tester l'application, j'ai exécuté le serveur de développement :
python manage.py runserver
La navigation vers http://127.0.0.1:8000/polls/ a affiché la liste des sondages et j'ai pu voir les détails, voter et voir les résultats.
Au cours des deux dernières semaines, j'ai appris à configurer Django, à créer un projet et à créer une application de sondage entièrement fonctionnelle. C'était fascinant de voir comment tout se connecte dans Django, des modèles aux vues en passant par les modèles. Cela a été une expérience formidable et j'ai hâte d'en savoir plus sur les puissantes fonctionnalités de Django !
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3