過去 2 週間にわたって、私は Django を最初からセットアップし、簡単な投票アプリケーションを構築することに取り組んできました。この記事では、Python と Django のインストールから始まり、仮想環境のセットアップ、新しいプロジェクトの作成、polls と呼ばれる機能アプリの構築まで、私が行ったことすべてを説明します。
1. Python と Django のセットアップ
まず、Python がシステムにインストールされていることを確認しました。まだインストールしていない場合は、python.org からダウンロードできます。
ステップ 1: Python をインストールし、仮想環境をセットアップする
プロジェクトの依存関係を分離したかったので、仮想環境を使用しました。
# 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
ステップ 2: Django をインストールする
環境がアクティブになったら、Django をインストールしました。
pip install django
次に、次を実行してインストールを確認しました:
django-admin --version
2.新しい Django プロジェクトの開始: mysite
さて、Django プロジェクトを作成するときが来ました。それを私のサイトと呼ぶことにしました。
django-admin startproject mysite cd mysite
これにより、設定と構成を含む Django プロジェクトの基本構造が作成されました。
3.新しい Django アプリの作成:polls
プロジェクトをセットアップした後、polls という新しいアプリを作成しました。これには、poll アプリケーションのすべてのロジックとビューが含まれます。
python manage.py startapp polls
mysite/settings.py の INSTALLED_APPS に新しいアプリを追加しました:
INSTALLED_APPS = [ # other installed apps 'polls', ]
4.モデルの定義
私はまず、質問と選択という 2 つのモデルを定義しました。質問には質問テキストと公開日が含まれますが、選択肢には質問への参照があり、テキストと投票数が保存されます。
投票アプリの models.py ファイルは次のとおりです:
# 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.データベースの作成と移行の実行
次に、データベースを作成し、移行を適用しました:python manage.py migrate次に、投票アプリの移行ファイルを作成しました:
python manage.py makemigrations polls python manage.py migrate6.投票アプリのビューの作成
質問のリストの表示、質問の詳細の表示、投票結果の表示を処理するために、いくつかのビューを作成しました。これらのビューはクラスベースであり、Django の組み込み汎用ビューを使用します。
投票用のビューの作成
次に、データをユーザーに表示する方法を制御するビューを作成しました。物事をシンプルにするために、Django の汎用ビューを使用しました。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. URL の設定
投票アプリの urls.py ファイルに URL パターンを追加して、各ビューを特定の URL にリンクしました。
# 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.ビューのテンプレートの作成
最後に、質問と結果を表示する HTML テンプレートを作成しました。テンプレートは、polls/templates/polls/ フォルダーに配置されます。
index.html
{% if latest_question_list %}
No polls are available.
{% endif %}詳細.html
結果.html
{{ question.question_text }}
アプリケーションを実行しています
アプリケーションをテストするために、開発サーバーを実行しました:
python manage.py runserver
http://127.0.0.1:8000/polls/ に移動すると、投票のリストが表示され、詳細を表示し、投票し、結果を確認できました。
過去 2 週間にわたって、Django をセットアップし、プロジェクトを作成し、完全に機能する投票アプリを構築する方法を学びました。モデルからビュー、テンプレートに至るまで、すべてが Django でどのように接続されているかを見るのは興味深いことでした。これは素晴らしい経験でした。Django の強力な機能についてもっと学ぶのが楽しみです!
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3