djangoでのプロジェクト作成

徒然草2.0

AnacondaのEnviromentから(Navigatorを使って)Baseより派生させた環境を選んでterminalを起動する。そして、cdで自分のdocumentディレクトリへ移動する。

cd document

それから、djangoのプロジェクトを作成するコマンドを叩く。プロジェクト名は「project01_test」とする。

django-admin startproject project01_test

IDEのspyderに戻って[プロジェクト]から、上のコマンドで作成したディレクトリを「新規プロジェクト」として選択する。django-adminは管理者コマンドで多用する。

WEBサーバの起動
...とりあえず、WEBサーバを起動するにはターミナルからディレクトリに入って下記のコマンドを打つ。

cd project01_test
python manage.py runserver

デフォルト設定では「http://localhost:8000/」にアクセスするとdjangoのページが見られる。Webサーバを停止したいなら(Ctrl+c)manager.pyは非常に重要なdjangoの管理系ファイルである。
・アプリケーション…djangoにおける「アプリケーション」とはMVCモデルの一連のページのことを指す。1つのプロジェクトに複数のアプリケーションが入っているイメージ。

アプリケーションの作成「ap_test1」を作成した。

python manage.py startapp ap_test1

ap_test1内のview.pyを下記のように編集する。

from django.shortcuts import render
from django.http import HttpResponse

def index(request):
    return HttpResponse("Hello World");

そして、urlsにルーティングに関するコードを追記します。

from django.contrib import admin
from django.urls import path
import ap_test1.views as ap_test1

urlpatterns = [
    path('admin/', admin.site.urls),
    path('ap_test1/', ap_test1.index),
]

これでap_test1というページが表示されるようになった。ただし、このようにページを追加するたびにurls.py(urlディスパッチャ)に記載していては板片なのでアプリケーション毎にurls.pyを作成して管理するのがふつう。ap_test1ディレクトリにurls.pyを作成して以下のように記述すること。

from django.urls import path
from . import views

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

そして、大もとのprojet01_test/urls.pyの中を下記のように書き換える。

from django.contrib import admin
from django.urls import path,include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('ap_test1/', include('ap_test1.urls') ),
]

これでアプリケーション毎にurls.pyを編集できるため大規模なプロジェクトのときには楽かも。
ちなみに、GETパラメータを受け取るには以下のようにrequest.GET[‘v’]で取得できる。view.pyを以下のように変更する。

def index(request):
    if 'v' in request.GET:
        result = 'get v=' + request.GET['v']
    else:
        result = 'error'
    return HttpResponse(result)

※「http://localhost:8000/ap_test1」と「http://localhost:8000/ap_test1?v=1234」にアクセスして結果を確認

※これは「Django超入門」を自分用にアレンジして圧縮したメモです。より詳しくはそちらの書籍をご購入下さい。

徒然草2.0
スポンサーリンク
シェアする
gomiryoをフォローする
ごみぶろぐ

コメント

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