LoginSignup
3
1

More than 3 years have passed since last update.

Djangoの環境構築

Posted at

経緯

Pythonで少しだけお仕事する事になった物の、「おじさん、Pythonやった事ないお・・・」って状況だったので、
お家パソコンにまずはDjangoでも入れて、色々作ってみるか!と言うノリ。

このページの目的

もうおじさんなので、物忘れ激しい・・・って事で忘れないようにメモメモ・・・

環境

  • Windows10 Pro
  • Python 3.7.3
  • Miniconda 4.6.14

実はPythonだけは既に入れていたりする。。。

まずは・・・

pipでインストール。バージョンは2.1.8。

pip install django==2.1.8

バージョン指定には特に意味はない・・・

プロジェクトの生成

django-admin startproject djtest

"djtest"の部分がプロジェクト名になる感じ。

とりあえず動かしてみる

cd djtest
python manage.py runserver

おお、起動した・・・↓の様な出力が出来てれば問題なさそう・・・

Performing system checks...

System check identified no issues (0 silenced).

You have 15 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
June 13, 2019 - 10:40:52
Django version 2.1.8, using settings 'djtest.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

Django.png

おお・・・表示された・・・
しかし、このロケットのアイコンってDjangoの何とかかってるのかなぁ・・・

設定をいじってみる

プロジェクトフォルダ直下/プロジェクト名のフォルダ/settings.pyをいじいじ・・・

settings.py
LANGUAGE_CODE = 'ja'

TIME_ZONE = 'Asia/Tokyo'

言語を日本語に、タイムゾーンを東京に変更。

アプリを追加してみる

python manage.py startapp hello

"hello"の所がアプリ名になって、フォルダも作成される。

アプリの登録

↑で登録したアプリをプロジェクトに登録しないといかんらしい。。。ふむふむ・・・

settings.py
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'hello',   # ←追加
]

コントローラー部分を触ってみる

プロジェクトフォルダ/アプリフォルダ/views.pyがコントローラになる感じ。

views.py
from django.shortcuts import render

# Create your views here.
def index(request):
    return render(request, "hello/index.html")

renderの第二引数でテンプレートファイルを呼び出している。
テンプレートはどこに置くの?ってなると思うけど、プロジェクトフォルダ/アプリフォルダ/templatesの下にテンプレートファイルを置く感じ。

デフォルトだとtemplatesフォルダは無いので、自力作成、helloフォルダも自力作成。
それと、今回のテンプレートファイルの中身には"hello"だけ書いてる感じ。

ルーティングの設定

アプリフォルダの直下に"urls.py"を作成して、以下の様に書く。

urls.py
from django.conf.urls import url
from . import views

app_name = "hello"

urlpatterns = [
    url(r'^$', views.index, name="hello")
]

app_nameが無いと、「'Specifying a namespace in include() without providing an app_name」とかで怒られる。

その後にプロジェクトフォルダ/プロジェクト名のフォルダ/urls.pyを編集。

urls.py
from django.contrib import admin
from django.urls import path, include # ←include追加

urlpatterns = [
    path('admin/', admin.site.urls),
    path("", include("hello.urls", namespace="hello")) #←追加
]

個人的には「なんか面倒だなー」と思ったのがルーティング設定。普段はRailsで仕事してるので、とても違和感。。。
他にもっと簡単な書き方あるのかな?とも思ったので、これは今度調べてみる。

DB接続に関してはまた今度まとめようっと。

感想

当然と言えば当然ですけども、普段Railsで仕事してると「あー、全然構成違うんだなぁ」と言う気持ち。
ちゃんと意味があってこういう構成にしてるんだろうなとは思うけど、その意図まで汲み取れてないので、まだまだ勉強が必要だなーと。

おーし、こっからPythonの勉強やっちゃうぞー!(順序が違うとか言わないで!)

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1