Djangoでアプリを作る~その1.ローカルサーバーを立てる~

プログラミング

こんにちは

Djangoでアプリを作って、誰でも使えるようサーバーにアップしたいと思ったので、勉強しながらやっています。

今回はDjangoを使ってローカルサーバーを立ち上げるところまでできたので、そこまでをご紹介したいと思います。

それ以降はまた次の記事で紹介したいと思っています。

ではさっそくいきましょう。

スポンサーリンク

Djangoインストール

今回は前回と同じく、自作の翻訳機アプリを題材に話を進めていきたいと思います。

このような構成になっています。

Project
|-main.py
|_translate.py
(main.pyとtranslate.pyはなくても大丈夫です。Projectフォルダは作っておいてください。)

まず、powershellでアプリを作りたいディレクトリに(ぼくの場合はProjectフォルダ)に移動します。

次にそこディレクトリで開発環境を作ります。

開発環境の作り方は以下を参考にしてください。

開発環境ができたら、起動してDjangoをインストールします。

以下のコードを打ってください。

$ pip install django

試しに本当にインストールされているか確認してみましょう。

$ python -m django --version

2.2.◯などのdjangoのバージョンが出てきたらインストールされています。

開発用サーバーを立てる

プロジェクトを立ち上げる

さて、ここまでいけたらつぎはいよいよアプリ制作に取り掛かっていきます。

と、その前に「プロジェクト」を立てなくてはいけません。

「プロジェクト」とはデータベースの管理や、アプリの基本設定などを行うファイルを集めたものです。

アプリを作る上では欠かせないものなので新規で作る際は必ずこの「プロジェクト」を立てなくてはいけません。

とはいえやり方は簡単で、以下のコードを打ちます。

$ django-admin startproject プロジェクト名

これで新たなディレクトリが自動で作られます。ぼくの場合はこのようになりました。

Project
|-main.py
|-translate.py
|_translation(プロジェクト名) ←New!!
   |-manage.py
   |_translation
      |-__init__.py
      |-settings.py
      |-urls.py
      |_wsgi.py

それぞれの役割は以下の公式ドキュメントでご確認ください。

Django
The web framework for perfectionists with deadlines.

プロジェクトが立ち上がっているかどうか確認する

さて、プロジェクトが立ち上がっているかどうか確認しましょう。

以下のコマンドを打ち込んでみましょう。

$ python manage.py runserver

次のような出力が確認できれば成功です。

Performing system checks...

System check identified no issues (0 silenced).

You have unapplied migrations; your app may not work properly until they are applied.
Run 'python manage.py migrate' to apply them.

〇月 〇, 2019 - 15:50:53
Django version 2.2, using settings 'プロジェクト名.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

ブラウザでhttp://127.0.0.1:8000/を確認すると下のような画面が出てくるはずです。

アプリを作る

さて、プロジェクトも立ち上がりあとはアプリを作るだけです。

手始めに「Hello World」を出力させてみましょう。

まず、先ほど作っておいた「プロジェクト」ディレクトリ(ぼくの場合はtranslationディレクトリ)に入ります。

そして、以下のコードを打ち込みます。

$ python manage.py startapp アプリ名

すると、以下のようにディレクトリができるかと思います。

Project
|-...(省略)
|_translation(プロジェクト名)
   |_translation
   |  |_...(省略)
   |_translateapp(アプリ名) ←New!!
     |- __init__.py
     |-admin.py
     |-apps.py
     |-migrations/
     |  |-__init__.py
     |-models.py
     |-tests.py
     |_views.py

view.pyのコードを変える

では、まずview.pyを開いて以下のコードを打ち込んでいきます。

from django.shortcuts import render

# Create your views here.
from django.http import HttpResponse


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

view.pyは名前の通り見た目を管理するところです。これを呼び出すためにurl.pyを今度は変更します。

アプリディレクトリにあるurl.pyのコードを変える

今度はurl.pyというファイルを操作します。これは最初の段階ではアプリ(translateappディレクトリ)のディレクトリにはないので自分で作らなくてはいけません。(プロジェクトディレクトリにurl.pyが見えるかもしれませんが、これとはまた別のurl.pyを作ってください。)

Project
|-...(省略)
|_translation(プロジェクト名)
   |_translation
   |  |_...(省略)
   |_translateapp(アプリ名)
     |- __init__.py
     |-admin.py
     |-apps.py
     |-migrations/
     |  |-__init__.py
     |-models.py
     |-tests.py
     |-urls.py ←新しく作る!!
     |_views.py

作ったら以下のコードを打ち込みます。

from django.urls import path

from . import views

urlpatterns = [
    path('', views.index, name='index'),
]

プロジェクトディレクトリにあるurl.pyのコードを変える

今度はプロジェクトディレクトリにあるurl.pyに変更を加えます。

Project
|-...(省略)
|_translation(プロジェクト名)
|  |-manage.py
|  |_translation
|     |-__init__.py
|     |-settings.py
|     |-urls.py ←今度はこっち!!(これは最初からあるので作らなくていいです。)
|     |_wsgi.py
|_translateapp(アプリ名)
  |-...(省略)

以下のコードをurl.pyに書き込みます。

from django.contrib import admin
from django.urls import path,include(includeを付け加える)

urlpatterns = [
    path('polls/', include('polls.urls')), ←付け加える
    path('admin/', admin.site.urls),
]

サーバーを立てる

さあ、それではもう一度サーバーを立てましょう。

以下のコードをコマンドで打ってください。

python manage.py runserver

ブラウザでhttp://127.0.0.1:8000/を確認してみましょう。

Hello, world !

(画面の文字はちょっと違います。すみません。)

と画面に表示されたら成功です!!

続きはこちら

参考

Django
The web framework for perfectionists with deadlines.
Python Django入門 (2) Win編 - Qiita
WindowsでのPython、Djangoの開発環境構築について説明します。Pythonのインストールまず Python をインストールします。以下のURLをブラウザで開いて下さい。Dow…

コメント

  1. […] 前回の続きです。今回はアプリを具体的に組み立てていきたいと思います。 […]

  2. […] Scrapyを使うに当たり、以前紹介したDjangoのようにプロジェクトを作っていきます。 […]

  3. […] […]

タイトルとURLをコピーしました