PyCharm 2019.1ヘルプ

ステップ 4. 最初のDjangoプロジェクトの作成と実行

始める前に

次の前提条件が満たされていることを確認してください。

  • PyCharmバージョン2016.1以上で作業しています。それでもPyCharmがない場合は、このページ(英語)からダウンロードしてください。PyCharmをインストールするには、プラットフォームに応じて指示に従ってください。

  • お使いのコンピューターに少なくとも1つのPythonインタープリターが正しくインストールされています。このページ(英語)からインタープリターをダウンロードできます。

  • Djangoパッケージがインストールされています。PyCharm UIを使用してパッケージをインストールする方法については、パッケージのインストール、アンインストール、およびアップグレードを参照してください。Djangoのインストール方法(英語)ページの説明に従って、Djangoをインストールすることもできます。

このチュートリアルは、次の前提で作成されています。

  • Python 3.4.1.

  • Django 1.x(Django 1.10 より後)

  • このチュートリアルで使用されている例は、Djangoのドキュメント(英語)で使用されているものと似ています。サンプルプロジェクトはこちらからダウンロードできます。

新しいプロジェクトを作成する

実際、新しいプロジェクトはすべて同じ方法で作成されます: ようこそ画面のクイックスタートエリアで新規プロジェクトの作成ボタンをクリックしてください:

Welcome screen

すでに開いているプロジェクトがある場合は、メインメニューでファイル | 新規プロジェクト...を選択して新しいプロジェクトを作成します。

次に、目的のプロジェクトタイプ(ここではDjango)を選択します。プロジェクト名と場所を指定します。

Pythonのベストプラクティスは、各プロジェクトのvirtualenvを作成することです。これを行うには、プロジェクト・インタープリター: 新規 Virtualenv 環境ノードを展開し、新しい仮想環境の作成に使用するツールを選択します。Virtualenvツールを選択し、新しい仮想環境に使用する場所とベースインタープリターを指定しましょう。必要に応じて、以下の2つのチェックボックスを選択します。

次に、詳細設定ノードを展開し、Django関連の設定を指定します。アプリケーション名フィールドに、アプリケーション名(ここではpolls )を指定します。

selecting a project type

作成をクリックします - Djangoプロジェクトが準備完了です。

プロジェクトの構造を探る

前述したように、基本的にスタブプロジェクトは準備ができています。フレームワーク固有のファイルとディレクトリーが含まれています。PyramidやGoogle App Engineなど、サポートされているタイプのプロジェクトを作成しても同じことが起こります。

新しいプロジェクトの構造がプロジェクトツールウィンドウでどのように見えるかを見てみましょう。

プロジェクトツールウィンドウのプロジェクトビュー

このビューは、デフォルトで表示されます。これはDjango固有のプロジェクト構造を示しています: pollsmysite ディレクトリー;また、manage.py および settings.py ファイルが表示されます。

このビューでは、.idea ディレクトリーは表示されません。

Project view

プロジェクトツールウィンドウのプロジェクトファイルビュー

何らかの理由で .idea ディレクトリーの内容を表示したい場合は、プロジェクト・ファイルビューを選択してください: ご覧のとおり、このビューはプロジェクトのルートにあるため、同じディレクトリーとファイルと .idea ディレクトリーを表示します。

Project files

プロジェクトビューに戻りましょう。

プロジェクトビューでは何が表示されますか?

  • mysite ディレクトリーはプロジェクトのコンテナーです。プロジェクトビューでは太字で表示されます。

  • manage.py : これはDjangoプロジェクトと対話できるコマンドラインユーティリティです。詳細は、Djangoのドキュメント(英語)を参照してください。

  • ネストされたディレクトリー mysite は、プロジェクトの実際のPythonパッケージです。

  • mysite/__init__.py : この空のファイルはPythonに、このディレクトリーをPythonパッケージとみなすべきであることを伝えます。

  • mysite/settings.py : このファイルにはDjangoプロジェクトの設定(英語)が含まれています。

  • mysite/urls.py : このファイルにはDjangoプロジェクトのURL宣言(英語)が含まれています。

  • mysite/wsgi.py : このファイルは、プロジェクトに対応するWSGI互換Webサーバーのエントリポイントを定義します。詳細はWSGIを使用してデプロイする方法(英語)を参照してください。

  • ネストされたディレクトリー polls には、Djangoアプリケーションの開発に必要なすべてのファイルが含まれています(この時点では、これらのファイルは空です)。

    • ここでも、polls/_init_.py はPythonに、このディレクトリーをPythonパッケージとみなすべきだと伝えます。

    • polls/models.py : このファイルでは、アプリケーション用のモデルを作成します。

    • polls/views.py : このファイルでは、ビューを作成します

  • templates ディレクトリーは空になりました。テンプレートファイルが含まれている必要があります。

  • ネストされたディレクトリー migrations にはパッケージファイル _init_.pyしか含まれていませんが、将来的には、モデルに加えた変更(フィールドの追加、モデルの削除など)をデータベーススキーマに反映させるために使用されます。ここでマイグレーションの説明を読んでください。

Djangoアプリケーションは必要に応じていくつでも作成できます。アプリケーションをプロジェクトに追加するには、manage.py ユーティリティの startapp タスクを実行します(ツール| manage.pyタスクを実行する、次にコンソールに startapp と入力します)。

データベースの設定

プロジェクトスタブが準備完了したら、微調整をしましょう。 settings.pyを編集するために開きます。これを行うには、プロジェクトツールウィンドウでファイルを選択し、F4を押します。このファイルは、エディターの独自のタブで開きます。

アプリケーションで使用する予定のデータベースを指定します。この目的のために、DATABASES 変数を見つけます: Ctrl+Fをクリックして、検索フィールドに探している文字列をタイプしてください。次に、'ENGINE' の行で、ドットの後にデータベース管理システムの名前を追加します。(コメントの後に指定したものはどれでも使用できますが、最初は sqlite3から始めます。)

'NAME' 行には、まだ存在しない場合でも、目的のデータベースの名前を入力します。

Define database

Djangoサーバーの起動

sqlite3を慎重に選んだため、他の値(ユーザー資格情報、ポートとホスト)を定義する必要はありません。設定が正しいかどうか確認しましょう。これは最も簡単に行うことができます。manage.py ユーティリティの runserver タスクを起動します。Ctrl+Alt+Rを押し、manage.py コンソールにタスク名を入力します。

Running manage.py in the console

推奨リンクをたどり、次のページを参照してください:

Preview the page

モデルの作成

次に、ファイル models.pyを編集するために開いて、import文が既にそこにあることに注意してください。次に、次のコードを入力します。

from django.db import models # the following lines added: import datetime 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 def was_published_recently(self): now = timezone.now() return now - datetime.timedelta(days=1) <= self.pub_date <= now was_published_recently.admin_order_field = 'pub_date' was_published_recently.boolean = True was_published_recently.short_description = 'Published recently?' class Choice(models.Model): question = models.ForeignKey(Question, on_delete=models.DO_NOTHING,) choice_text = models.CharField(max_length=200) votes = models.IntegerField(default=0) def __str__(self): return self.choice_text

実際には、コピー・ペーストが可能ですが、タイピングはお勧めです。これは、PyCharmのコード補完が実際に動作していることを確認できます。

Using code competion

データベースの作成

新しいモデル用のテーブルを作成する必要があります。この目的のために、manage.py コンソールを呼び出すために魔法の Ctrl+Alt+R ショートカットを使います。最初に実行するコマンドは makemigrations pollsです。

executing makemigrations

つまり、Djangoに2つの新しいモデル ChoiceQuestionが作成され、移行が作成されたことを伝えました。

migration

次に、プロンプトの後に次のコマンドを入力します。

sqlmigrate polls 0001
executing sqlmigrate pools 0001

最後に、migrate コマンドを実行して、実際にデータベースにこれらのテーブルを作成します。

creating tables in the database

管理機能の実行

まず、スーパーユーザーを作成してください。これを行うには、manage.py コンソールで createsuperuser コマンドを入力し、自分のメールアドレスとパスワードを指定します。

creating a superuser

サイト管理を有効にすることを決めたため、PyCharmは既にファイル urls.pyの対応する行のコメントを外しています。

編集のために polls ディレクトリーの admin.py ファイルを開き、既に存在する次のコードを参照してください:

from django.contrib import admin

ただし、管理サイトの編集機能を有効にする必要があります。

実行/デバッグ構成の準備

これで管理者ページに移動する準備が整いました。確かに、Djangoサーバーを実行し、ブラウザにアクセスし、アドレスバーにURL全体を入力することは可能ですが、PyCharmを使用すると簡単な方法があります。あらかじめ設定されたDjangoサーバーの実行構成を少し変更して使用します。

この実行/デバッグ設定を編集用に開くには、メインツールバーの実行/デバッグ設定セレクタをクリックし、構成の編集を選択します(またはメインメニューで実行 | 構成の編集を選択します)。

Editing Run/Debug configuration

実行/デバッグ設定ダイアログで、この実行/デバッグ設定に名前(ここでは mysite)を付け、デフォルトブラウザでアプリケーションの実行を有効にし(チェックボックスブラウザーの実行を選択)、デフォルトで開くサイトのページを指定します(ここではこのページです): http://127.0.0.1:8000/admin/):

setting the default web page

管理サイトの起動

アプリケーションを起動するには、Shift+F10を押すか、メインツールバーの run をクリックして、標準のDjangoサイトログインページを開きます。

login page

ログインすると、管理ページが表示されます。認証と認可 (グループとユーザー)セクションがありますが、投票は使用できません。なぜそうなるのでしょうか?

adminに質問オブジェクトには管理インターフェースがあることを伝えなければなりません。これを行うには、polls/admin.py ファイルを編集用に開き(プロジェクトビューで F4を選択して)、次のコードを入力します。

from django.contrib import admin from .models import Question #this line added admin.site.register(Question)#this line added

もう一度コード補完に注意してください:

code completion

ページを更新し、質問が表示された投票セクションが表示されていることを確認します。

site administration page

いくつかの質問を作成するには、追加をクリックします。

admin.pyの編集

しかし、それぞれの質問にはいくつかの選択肢がありますが、選択肢はまだありません。再度、ファイル polls/admin.py を編集するために開き、次のように変更します。

from django.contrib import admin from .models import Choice, Question class ChoiceInline(admin.TabularInline): model = Choice extra = 3 class QuestionAdmin(admin.ModelAdmin): fieldsets = [ (None, {'fields': ['question_text']}), ('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}), ] inlines = [ChoiceInline] admin.site.register(Question, QuestionAdmin)

今すぐ質問を変更するページを見てください:

Change question page

ビューの作成

polls/views.py ファイルを編集用に開き、次のPythonコードを入力します。

from django.http import HttpResponse def index(request): return HttpResponse("Hello, world. You're at the polls index.")

次に、urls.py という名前の新しいファイルを polls ディレクトリーに追加し、次のコードを入力します。

from django.conf.urls import url from . import views urlpatterns = [ url(r'^$', views.index, name='index'), ]

次に、ファイル mysite/urls.py (PyCharmがすでに作成している)を編集し、インデックスページのURLを追加します: 次のコードで終わるべきです:

from django.conf.urls import include, url from django.contrib import admin urlpatterns = [ url(r'^polls/', include('polls.urls')), #this line added url(r'^admin/', admin.site.urls), ]

ページ 127.0.0.1:8000/polls/ を開いて楽しみましょう:

start page

次に、より多くのビューを追加しましょう。再度、polls/views.pyファイルに次のコードを追加します。

def detail(request, question_id): return HttpResponse("You're looking at question %s." % question_id) def results(request, question_id): response = "You're looking at the results of question %s." return HttpResponse(response % question_id) def vote(request, question_id): return HttpResponse("You're voting on question %s." % question_id)

次の url() 呼び出しを追加して、これらの新しいビューを polls.urls モジュールに配線します。

from django.conf.urls import url from . import views urlpatterns = [ url(r'^$', views.index, name='index'), # ex: /polls/5/ url(r'^(?P<question_id>[0-9]+)/$', views.detail, name='detail'), # ex: /polls/5/results/ url(r'^(?P<question_id>[0-9]+)/results/$', views.results, name='results'), # ex: /polls/5/vote/ url(r'^(?P<question_id>[0-9]+)/vote/$', views.vote, name='vote'), ]

ブラウザで対応するページを開くと、次のように表示されます。

application pages

Djangoテンプレートの作成

ご覧のとおり、これらのページのデザインはビューにハードコードされています。読みやすくするために、対応するPythonコードを編集する必要があります。次に、Pythonからの出力の視覚的表現を分離しましょう。そうするために、テンプレートを作成しましょう。

ファイル polls/views.py を編集するために開き、その内容を次のコードに置き換えます。

from django.http import HttpResponse, HttpResponseRedirect from django.shortcuts import get_object_or_404, render from django.urls import reverse from .models import Question, Choice def index(request): latest_question_list = Question.objects.order_by('-pub_date')[:5] context = {'latest_question_list': latest_question_list} return render(request, 'polls/index.html', context) def detail(request, question_id): question = get_object_or_404(Question, pk=question_id) return render(request, 'polls/detail.html', {'question': question}) def results(request, question_id): question = get_object_or_404(Question, pk=question_id) return render(request, 'polls/results.html', {'question': question}) def vote(request, question_id): question = get_object_or_404(Question, pk=question_id) try: selected_choice = question.choice_set.get(pk=request.POST['choice']) except (KeyError, Choice.DoesNotExist): return render(request, 'polls/detail.html', { 'question': question, 'error_message': "You didn't select a choice.", }) else: selected_choice.votes += 1 selected_choice.save() return HttpResponseRedirect(reverse('polls:results', args=(question.id,)))

インポート・ステートメントの作成に役立つインポート・アシスタントに注意してください。

最初に気付くのは、index.htmlページへの未解決の参照です。

view.py code

PyCharmはクイックフィックスを示唆: 電球をクリックするか Alt+Enterを押すと、対応するテンプレートファイルがtemplatesフォルダーに作成されます(PyCharmはこのテンプレートが存在するはずのディレクトリー polls も作成します)。

creating a template

これまでのところ、ファイル index.html は空です。次のコードを追加します。

{% load staticfiles %} <link rel="stylesheet" type="text/css" href="{% static 'polls/style.css' %}" /> {% if latest_question_list %} <ul> {% for question in latest_question_list %} <li><a href="{% url 'detail' question.id %}">{{ question.question_text }}</a></li> {% endfor %} </ul> {% else %} <p>No polls are available.</p> {% endif %}

テンプレートファイルのコード補完に注意してください。例:開始 {%を入力すると、PyCharmは一致する %} を自動的に追加して、将来の入力位置にキャレットを配置します。HTMLタグでは、コード補完も利用できます。

ファイル views.pyindex.html の左のガターにそれぞれ現れるアイコン html typepython type に注意してください。

viewing html and python code

これらのアイコンを使用すると、ビューメソッドとそのテンプレートをすぐにジャンプすることができます。記事テンプレートとビュー間を移動するパート6: Django固有のナビゲーションのこの種のナビゲーションの詳細については、こちらを参照してください。

スタイルシートの使用

ビューファイル index.htmlに見られるように、スタイルシートへの参照があり、未解決です:

この参照を次のように解決します。

  1. ディレクトリーを作成します。これを行うには、ProjectビューでPythonパッケージ pollsを選択し、Alt+Insertを押します。

    表示されるポップアップメニューでディレクトリーを選択し、ディレクトリー構造 static/pollsの名前を指定します。

  2. 次に、このディレクトリーにスタイルシートを作成します。これを行うには、最も内側のディレクトリー pollsを選択し、Alt+Insertを押し、オプションスタイルシートを選択して、表示されるダイアログでstyleを入力します。

  3. 好みに応じて、作成されたスタイルシートにいくつかのコンテンツを提供します。例:緑色の質問の箇条書きリストが表示されます。

    li a { color: green; }

さあ着いた!

次に、利用可能な投票のリストを確認しましょう。私たちの管理サイトは既に稼働しています。投票のリスト(インデックスページ)を含むページにアクセスする最も簡単な方法はURLを指定することです: /admin/の代わりにブラウザのアドレスバーに /polls/と入力してください:

polls

テスト…

PyCharmがアプリケーションのテストを簡素化する方法を見てみましょう。

polls ディレクトリーにすでにファイル tests.py があります。今は、このファイルは空です。もちろん、この特定のファイルに新しいテストを配置することをお勧めします。例:私たちのアンケートが空でないことを確認したいのですが:

import datetime from django.urls import reverse from django.test import TestCase from django.utils import timezone from .models import Question def create_question(question_text, days): time = timezone.now() + datetime.timedelta(days=days) return Question.objects.create(question_text=question_text, pub_date=time) class QuestionViewTests(TestCase): def test_index_view_with_no_questions(self): """ If no questions exist, an appropriate message should be displayed. """ response = self.client.get(reverse('index')) self.assertEqual(response.status_code, 200) self.assertContains(response, "No polls are available.") self.assertQuerysetEqual(response.context['latest_question_list'], [])

このテストを実行するには、エディターでファイル tests.py の背景を右クリックするか、オプション実行を選択するか、または単に Ctrl+Shift+F10を押します。PyCharmは2つのオプションを提案します:UnitTest( デフォルトのテストランナーとして定義されている)を実行するか、Djangoテストを実行します。

テスト結果は、実行ツールウィンドウの[テスト・ランナー]タブに表示されます。

running tests

要約

この簡単なチュートリアルは終了しました。簡単にDjangoアプリケーションを作成して起動しました。PyCharmの助けを借りて何をしてきたのかを繰り返しましょう。

  • Djangoプロジェクトとアプリケーションが作成されました

  • Djangoサーバーが開始

  • データベースが構成されている

  • 作成されたモデル、ビュー、テンプレート

  • アプリケーションが起動しました

  • 作成され実行されたテスト

最終更新日: 2019年7月17日

関連ページ:

パッケージのインストール、アンインストール、およびアップグレード

PyCharmは、特定のPythonインタープリター用にPythonパッケージをインストール、アンインストール、およびアップグレードするための方法を提供します。デフォルトでは、PyCharmはプロジェクトパッケージの管理にpipを使用します。Conda環境では、condaパッケージマネージャーを使う...

ようこそ画面

PyCharmは、プロジェクトが開かれていないときにようこそ画面を表示します。この画面から、PyCharmのメインセクションに素早くアクセスできます。ウェルカム画面は、プロジェクトの唯一のインスタンスを閉じるとき、または初めてPyCharmを実行するときに表示されます。ようこそ画面は、次のセクション...

プロジェクトツールウィンドウ

表示 | ツール・ウィンドウ | プロジェクトこのツールウィンドウを使用すると、プロジェクトをさまざまな観点から見て、新しい項目(ディレクトリー、ファイル、クラスなど)の作成、エディターでのファイルの開き、目的のコードフラグメントへの移動などのタスクを実行できます。このツールウィンドウ内のほとんどの...

実行/デバッグ構成: Django サーバー

この機能はProfessionalエディションでのみサポートされています。このエディションは有償で、優れた機能を提供します。詳細は比較表を参照してください。このダイアログを使用して、Django サーバーの実行/デバッグ構成を作成します。本セクション:構成タブ、ログタブ、共通オプション、ツールバー、...

インテンション・アクション

エディターで作業するときに、PyCharmはコードを分析し、コードを最適化する方法を検索し、潜在的な問題と実際の問題を検出します。IDEがコードを変更する方法を見つけるとすぐに、現在の行の隣に黄色い電球のアイコンがエディターに表示されます。このアイコンをクリックすると、このコード単位に使用可能なイン...

コード補完

このセクションでは、コーディングプロセスのスピードアップを可能にするコンテキスト対応コード補完のさまざまなテクニックについて説明します。基本補完:基本コード補完を使用すると、可視性の範囲内でクラス、メソッド、およびキーワードの名前を完成させることができます。コード補完を起動すると、PyCharmはコ...