In den letzten zwei Wochen habe ich daran gearbeitet, Django von Grund auf einzurichten und eine einfache Umfrageanwendung zu erstellen. Dieser Artikel führt Sie durch alles, was ich getan habe, angefangen bei der Installation von Python und Django, dem Einrichten einer virtuellen Umgebung, dem Erstellen eines neuen Projekts und dem Erstellen einer funktionsfähigen App namens Umfragen.
1. Python und Django einrichten
Zunächst habe ich sichergestellt, dass Python auf meinem System installiert ist. Wenn Sie es noch nicht installiert haben, können Sie es von python.org herunterladen.
Schritt 1: Python installieren und eine virtuelle Umgebung einrichten
Ich wollte meine Projektabhängigkeiten isoliert halten und habe daher eine virtuelle Umgebung verwendet.
# 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
Schritt 2: Django installieren
Sobald die Umgebung aktiviert war, habe ich Django installiert.
pip install django
Ich habe dann die Installation bestätigt, indem ich Folgendes ausgeführt habe:
django-admin --version
2. Starten eines neuen Django-Projekts: mysite
Jetzt war es an der Zeit, mein Django-Projekt zu erstellen. Ich habe beschlossen, es „Mysite“ zu nennen.
django-admin startproject mysite cd mysite
Dadurch wurde die Grundstruktur für ein Django-Projekt mit Einstellungen und Konfigurationen erstellt.
3. Erstellen einer neuen Django-App: Umfragen
Nachdem ich das Projekt eingerichtet hatte, erstellte ich eine neue App namens „Umfragen“, die die gesamte Logik und Ansichten für meine Umfrageanwendung enthalten würde.
python manage.py startapp polls
Ich habe die neue App zu INSTALLED_APPS in mysite/settings.py hinzugefügt:
INSTALLED_APPS = [ # other installed apps 'polls', ]
4. Definieren der Modelle
Ich begann mit der Definition zweier Modelle: Frage und Wahl. Eine Frage hat einen Fragentext und ein Veröffentlichungsdatum, während eine Auswahl einen Verweis auf eine Frage hat und den Text zusammen mit einer Stimmenzahl speichert.
Hier ist die models.py-Datei in der Umfrage-App:
# 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. Erstellen der Datenbank und Ausführen von Migrationen
Als nächstes habe ich die Datenbank erstellt und Migrationen angewendet:python manage.py migrateIch habe dann Migrationsdateien für die Umfragen-App erstellt:
python manage.py makemigrations polls python manage.py migrate6. Schreibansichten für die Umfrage-App
Ich habe mehrere Ansichten geschrieben, um die Anzeige einer Liste von Fragen, die Anzeige von Fragendetails und die Anzeige von Abstimmungsergebnissen zu verwalten. Diese Ansichten sind klassenbasiert und verwenden die integrierten generischen Ansichten von Django.
Ansichten für Umfragen erstellen
Anschließend habe ich die Ansichten erstellt, die steuern, wie Daten dem Benutzer angezeigt werden. Ich habe Djangos generische Ansichten verwendet, um die Dinge einfach zu halten.Hier ist die Datei „views.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. URLs konfigurieren
Ich habe der Datei urls.py in der Umfrage-App URL-Muster hinzugefügt, um jede Ansicht mit einer bestimmten URL zu verknüpfen.
# 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. Erstellen von Vorlagen für Ansichten
Abschließend habe ich HTML-Vorlagen erstellt, um die Fragen und Ergebnisse anzuzeigen. Die Vorlagen werden im Ordner polls/templates/polls/ abgelegt.
index.html
{% if latest_question_list %}
No polls are available.
{% endif %}detail.html
result.html
{{ question.question_text }}
Ausführen der Anwendung
Um die Anwendung zu testen, habe ich den Entwicklungsserver ausgeführt:
python manage.py runserver
Beim Navigieren zu http://127.0.0.1:8000/polls/ wurde die Liste der Umfragen angezeigt, und ich konnte Details anzeigen, abstimmen und Ergebnisse sehen.
In den letzten zwei Wochen habe ich gelernt, wie man Django einrichtet, ein Projekt erstellt und eine voll funktionsfähige Umfrage-App erstellt. Es war faszinierend zu sehen, wie in Django alles zusammenhängt, von Modellen über Ansichten bis hin zu Vorlagen. Das war eine großartige Erfahrung und ich freue mich darauf, mehr über die leistungsstarken Funktionen von Django zu erfahren!
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3