"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Configurer Django et créer une application de sondage : mes deux dernières semaines de travail

Configurer Django et créer une application de sondage : mes deux dernières semaines de travail

Publié le 2024-10-31
Parcourir:908

Setting Up Django and Building a Poll App: My Last Two Weeks of Work

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 migrate

J'ai ensuite créé des fichiers de migration pour l'application de sondages :

python manage.py makemigrations polls
python manage.py migrate

6. É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}.")

  • IndexView : affiche une liste des dernières questions.
  • DetailView : affiche les détails d'une question spécifique et ses choix.
  • ResultsView : affiche les résultats d'un sondage après le vote. La fonction vote() gère la soumission du vote de l'utilisateur.

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 %}
    
{% else %}

No polls are available.

{% endif %}

detail.html

{% csrf_token %}

{{ question.question_text }}

{% if error_message %}

{{ error_message }}

{% endif %} {% for choice in question.choice_set.all %}
{% endfor %}

result.html

{{ question.question_text }}

    {% for choice in question.choice_set.all %}
  • {{ choice.choice_text }} -- {{ choice.votes }} vote{{ choice.votes|pluralize }}
  • {% endfor %}
Vote again?

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 !

Déclaration de sortie Cet article est reproduit sur : https://dev.to/swahilipotdevs/setting-up-django-and-building-a-poll-app-my-last-two-weeks-of-work-16jl?1S'il y en a infraction, veuillez contacter [email protected] pour supprimer
Dernier tutoriel Plus>

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