2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Djangoを久しぶりに触る人が基本を思い出すための記事(1/3)~ターミナル、urls.py、views.py~

Last updated at Posted at 2020-11-29

##この記事の趣旨
以前はバリバリにDjangoを触っていたけど、最近触れてない。
基本はわかってる。環境構築もしてる。
久しぶりに仕事で触らんといけなくなったけど、基本的なことを忘れてしまった。
そんな方に向けての記事です。

##プロジェクトのスタート
作業フォルダまで移動し、ターミナル画面で以下のコマンドを打ちます。(Mac,Linux)

ターミナル
$ django-admin startproject XXXX

##プロジェクト内でappを作成する
プロジェクトフォルダの直下(manage.pyがあるフォルダ)まで移動し、
以下のコマンドを打ちます。(mac,Linux)

ターミナル
$ python3 manage.py startapp YYYY

##基本的なセッティング
プロジェクトを初めて記述する時は以下の点を修正します。
・INSTALLED_APPS
・LANGUAGE_CODE
・TIME_ZONE

settings.py
INSTALLED_APPS = [
    'django.contrib.admin',         #デフォルトで記載されてる
    'django.contrib.auth',          #デフォルトで記載されてる
    'django.contrib.contenttypes',  #デフォルトで記載されてる
    'django.contrib.sessions',      #デフォルトで記載されてる
    'django.contrib.messages',      #デフォルトで記載されてる
    'django.contrib.staticfiles',   #デフォルトで記載されてる

    'YYYY' #"manage.py startapp"で作成したappの名前を指定
]

LANGUAGE_CODE='ja'
TIME_ZONE='Asia/Tokyo'

##開発サーバー起動
プロジェクトフォルダの直下(manage.pyがあるフォルダ)まで移動し、
以下のコマンドを打ちます。(mac,Linux)

ターミナル
$ python3 manage.py runserver

##urls.pyの役割
ルーティングを担当。
プロジェクトのurls.pyでは各appのurls.pyへ役割を渡してあげる。
(プロジェクトのurls.pyではappのルーティングを記述しない)

プロジェクトのurls.py

from django.conf.urls import include

urlpatterns = [
    path('admin/',admin.site.urls),  #管理者用ページへのルーティング(Djangoの機能)
    path('',include('YYYY.urls')),   #各appのurlsへ役割を渡してあげる
]
appのurls.py

from . import views  #後述するviews.pyをインポートします。

app_name = 'YYYY'
urlpatterns = [
    path('example/exmaple/',views.example,name='exmaple'),
]

path()の説明
●第一引数はルーティングするURL。
上の例だと、http://xxxxx.com/example/emample/にルーティングされる。
indexの場合は第一引数を指定しない。例:path('',views.~~~~,name=''),
●第二引数は、後述するviews.pyで指定する「関数名」か「class名」を指定する。classで指定するときは、.as_viewが必要。
上の例では、views.pyの中のexampleという関数を実行するよう指定している。
●第三引数でこのルーティングの名前をつける。

##views.pyの役割
レンダリングを担当。ロジックのメインとなる部分。

views.py
@require_POST
def example(request):
    return TemplateResponse(request, 'example/example.html',{'text': text})

説明
●@require_POSTとは
@require_POSTでHTTPメソッドがPOSTの時のみという指定ができます。
@require_POSTを指定しない場合は、他のHTTPメソッドでも関数が実行されます。

●レンダリングの関数
上の例ではreturnでTemplateResponseを指定していますが、これ以外にも
HttpResponseRedirect
redirect
render
などで指定することができます。(違いが気になる方は各自調べてください)

●requestとは
Djangoが扱う変数です。
変数の中はリクエストのあったHTTPメソッドなど(POSTやGET)が入っています。
決まりごととして覚えておく。

●TemplateResponseの引数
第二引数でレンダリングするhtml(templatesフォルダに入ってるhtml)を指定。
第三引数ではhtmlに渡す辞書型の変数を指定します。
上の例では一つのデータを渡してますが、複数指定する場合は辞書型の形で記述します。

今日のところは以上。

【次回記事】Djangoを久しぶりに触る人が基本を思い出すための記事(2/3)~templates(html)~

2
3
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
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?