「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Django のセットアップと投票アプリの構築: 過去 2 週間の仕事

Django のセットアップと投票アプリの構築: 過去 2 週間の仕事

2024 年 10 月 31 日公開
ブラウズ:860

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

過去 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 migrate

6.投票アプリのビューの作成
質問のリストの表示、質問の詳細の表示、投票結果の表示を処理するために、いくつかのビューを作成しました。これらのビューはクラスベースであり、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}.")

  • IndexView: 最新の質問の一覧を表示します。
  • DetailView: 特定の質問とその選択肢の詳細を表示します。
  • ResultsView: 投票後の投票結果を表示します。 vote() 関数は、ユーザーの投票の送信を処理します。

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

No polls are available.

{% endif %}

詳細.html

{% csrf_token %}

{{ question.question_text }}

{% if error_message %}

{{ error_message }}

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

結果.html

{{ question.question_text }}

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

アプリケーションを実行しています
アプリケーションをテストするために、開発サーバーを実行しました:

python manage.py runserver

http://127.0.0.1:8000/polls/ に移動すると、投票のリストが表示され、詳細を表示し、投票し、結果を確認できました。

過去 2 週間にわたって、Django をセットアップし、プロジェクトを作成し、完全に機能する投票アプリを構築する方法を学びました。モデルからビュー、テンプレートに至るまで、すべてが Django でどのように接続されているかを見るのは興味深いことでした。これは素晴らしい経験でした。Django の強力な機能についてもっと学ぶのが楽しみです!

リリースステートメント この記事は次の場所に転載されています: https://dev.to/swahilipotdevs/setting-up-django-and-building-a-poll-app-my-last-two-weeks-of-work-16jl?1侵害がある場合は、削除するには[email protected]までご連絡ください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3