Djangoを勉強してみる_urlを学ぶ(入門編)

Pocket

前回の続きで、Djangoについて学んでいきます。

今回はurlについて色々勉強していきます。

Djangoの勉強内容は以下の本を参考にしています。

参考

Python Django3超入門 (日本語) 単行本 – 2020/6/13 掌田 津耶乃 (著)

URL を設計する

コードは以前の記事を参考にしてください。

Djangoを勉強してみる(入門編)

Djangoを勉強してみる(入門編その2)

アプリのurls.pyを作成

前回は、プロジェクトのurls.pyを使ってWebページを表示させましたが、一般的にDjangoを利用してWebページを作成する場合、アプリケーション毎にurlの処理をさせます。

そこで、まずはhelloアプリケーションにurls.pyを作成して、そこからurlを制御するようにします。

【手順】

1.helloアプリケーションの直下に「urls.py」を作成します。

2.以下のコードを入力します。

ファイル:sample_app>hello>urls.py

コード:

from django.urls import path from . import views urlpatterns = [     path('',views.index, name='index'), ]

このコードでは、urlpatterns のリストに「 path(”,views.index, name=’index’),」を入れています。

path関数の意味は、path(アクセスするアドレス,呼び出す処理)となっています。

つまり、アクセスするアドレスが空白のため「hello/」にアクセスするとviews.pyのindex関数を呼び出すという意味になります。

最後のnameはこのpathにindexという名前を指定するという意味です。
これだけでは意味は分かりませんが、後々使うことになるのでこういうものだと思って書いておきます。

以上で、アプリケーションのurls.pyは完成です。

3.プロジェクト側のurls.pyを修正します。

ファイル:sample_app>sample_app>urls.py

コード:

from django.contrib import admin from django.urls import path,include urlpatterns = [     path('admin/', admin.site.urls),     path('hello/', include('hello.urls')), ]

「path(‘hello/’, include(‘hello.urls’)),」の部分が、先ほどのアプリケーションのurls.pyに処理を渡すコードです。

具体的に言うと、include関数を使うことによって、「hello/」というpathにアクセスしてきた時は、helloアプリケーションのurls.pyを見に行きなさいという意味になります。

以上でプロジェクトのurls.pyの設定は終わりです。

動作確認してみます。

動作確認

まずは、サーバを起動します。

python manage.py runserver

ブラウザで以下にアクセスします。

http://localhost:8000/hello

問題なく表示されました。

今は簡単な文字だけを表示しているので、次はもう少し凝ったものを作成してみます。

クエリーパラメータを使う

クエリーパラメータとは、URLの後ろについてくるパラメータのことです。

例えばamazonでDjangoをキーワード検索すると、「https://www.amazon.co.jp/s?k=django&__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&ref=nb_sb_noss_2」というURLになります。

このURLの「?」以降の文字ががクエリーパラメータです。

そのクエリーパラメータをDjangoのWebアプリで使ってみたいと思います。

以下のviews.pyのコードを使って確認してみます。

ファイル:sample_app>hello>views.py

コード:

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

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

1.次のコードを追記します。

ファイル:sample_app>hello>views.py

コード:

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

def index(request):
    msg = request.GET['msg']
    return HttpResponse("このクエリーパラメータは" + msg + "です。")

2.サーバを起動し結果を確認します。
以下のURLを入力してアクセスします。

http://localhost:8000/hello/?msg=テスト

msgにテストという文字が入って表示されています。

今回作成したプログラムでは、「msg = request.GET[‘msg’]」を使うことによって、msgに代入された文字を取り出すようになっています。

このrequestとは「HttpRequest」というクラスのインスタンスになっています。
HttpRequestは、リクエストの情報を管理するクラスです。

リクエストとはWebブラウザからのWebサーバへアクセスした時に、サーバからブラウザへの情報をリクエストと呼びます。
ちなみにその逆もあり、そのことをレスポンスと呼びます。

そのリクエストには「GET」という属性が準備されて、中身は辞書になっています。クエリーパラメータの値もそこに入っています。

&msg=〇〇として送信された値は、GET[‘msg’]で取り出すことができます。

今のままだとクエリーパラメータが無い場合はすべてエラーになるため、どちらでも対応できるようにしてみます。

3.index関数を修正する

ファイル:sample_app>hello>views.py

コード:

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

def index(request):
    if 'msg' in request.GET:
        msg = request.GET['msg']
        result = "このクエリーパラメータは" + msg + "です。"
    else:
        result = "クエリーパラメータを入れてください。"

    return HttpResponse(result)

このコードでは、「if ‘msg’ in request.GET:」で、GETの辞書に中にmsgというキーの値があるかどうかを確認しています。

もし、キーがある場合は、msgを取り出して画面に表示しています。

無い場合は、「クエリーパラメータを入れてください。」という文字を表示されるようにしています。

以上で今回の内容は終わりです。

url.pyは絶対に利用するものなので理解を深めておく必要があります。

ありがとうございました。

 

P.S.

勉強を継続することが苦手ですか?

少し前からココナラというサービスで習慣化のテクニックについて教えるサービスを始めました。

もし、いつも3日坊主で終わってしまうという方や、ダイエットを続けたい、勉強したい、運動したいなど何か習慣化したいと思っている方がいましたら全力でサポートしますので、まずは覗いてみてください。

すでに何人かの方に実践してもらって効果が出ているという感想をいただいてます。

人生変わる?【習慣化の方法】を教えます 。ダイエット、勉強、運動を続けることが苦手ですか?

Pocket

Djangoを勉強してみる(入門編その2)

Pocket

前回の続きで、Djangoについて学んでいきます。

今回は簡単なWebページを作成して表示させてみます。

Djangoの勉強内容は以下の本を参考にしています。

Python Django3超入門 (日本語) 単行本 – 2020/6/13 掌田 津耶乃 (著)

まずは、前回作成したプロジェクトの配下にアプリを作成します。

Djangoを勉強してみる(入門編)

【アプリ作成】

以下のコマンドを実行します。

python manage.py startapp hello

コマンドを実行すると、プロジェクトは以下にhelloというフォルダが作成されます。

フォルダ構成は以下のようになります。

test@ubuntu:~/デスクトップ/Django/sample_app$ tree
.
├── db.sqlite3
├── hello
│   ├── __init__.py
│   ├── admin.py
│   ├── apps.py
│   ├── migrations
│   │   └── __init__.py
│   ├── models.py
│   ├── tests.py
│   └── views.py
├── manage.py
└── sample_app
    ├── __init__.py
    ├── __pycache__
    │   ├── __init__.cpython-38.pyc
    │   ├── settings.cpython-38.pyc
    │   ├── urls.cpython-38.pyc
    │   └── wsgi.cpython-38.pyc
    ├── asgi.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py

4 directories, 18 files

【コードを書く】

それでは、実際にコードを書いていきます。

1.viesw.py

まず初めに編集するファイルは、helloフォルダの「views.py」です。

views.pyファイルは画面の表示に関する処理を書くファイルになります。
このファイルを開くと以下のコードがデフォルトで記載されています。

ファイル:sample_app>hello>views.py

from django.shortcuts import render

# Create your views here.

それではこのファイルを編集して、テキストを表示する処理を書いてみます。

以下のように変更します。

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

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

このコードはWebページにプログラムでおなじみの「Hello World」を表示するプログラムです。

「HttpResponse」はWebブラウザでアクセスしてきたクライアントに送り返す内容をまとめたクラスです。

使い方は、「HttpResponse(送り返す内容)」というふうに書きます。

これでviews.pyは終わりです。
続いて、urls.pyを書き換えていきます。

2.urls.py

urls.pyというファイルは、URLを管理するためのものです。
ここに、特定のURLでアクセスしてきた時に、views.pyに書いた処理を実行させるようにコードを書いていきます。

ファイル:sample_app>sample_app>views.py

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

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

ここでは、urlpatternsに「path」関数を追加しています。

追加した内容は「path(‘hello/’, hello.index),」でURLで「hello/」にアクセスした時に、hello内のindexを実行するという意味です。

hello内のindexとは、vies.pyに記載してるindex関数のことになります。

さて、これを実行してみます。

【実行してみる】

python manage.py runserver

ブラウザで以下にアクセスします。

http://localhost:8000/hello

「Hello World!!」が表示されました。

以上で本日の内容は終わりです。

ありがとうございました。

Pocket

Djangoを勉強してみる(入門編)

Pocket

今回はPythonのWebフレームワークであるDjangoについて勉強し、その内容をアウトプットしようと思いこの記事を書きました。

Djangoの勉強内容は以下の本を参考にしています。

Python Django3超入門 (日本語) 単行本 – 2020/6/13 掌田 津耶乃 (著)

もし初心者でこれからDjangoを始めたいという方の参考になるように書きたいと思いますので、一緒にDjangoでWebアプリケーションを作っていきましょう。

【環境】

  • Ubuntu 20.4
  • Python 3.8.2
  • Django 3.1
  • apache  2.4.41
  • Pycharm ← エディターは何でも可

【前提】

  • Djangoを利用する環境が準備できていること
  • Pythonを少し知っていること

Djangoとapache2のインストールがまだの場合は、以下のコマンドでインストールしてください。

pip install Django
sudo apt install apache2

【Djangoを動かしてみる】

まず、Djangoを使うにはプロジェクトを作成する必要があります。
プロジェクトを作成するには以下コマンドを実行します。

django-admin startproject sample_app

コマンドを実行すると以下のようなフォルダが作成されます。

続いて、Djangoのサーバを動かししてみます。

以下のコマンドを入力します。

$ cd sample_app/
$ python manage.py runserver
Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).

You have 17 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.

August 26, 2020 - 12:01:37
Django version 3.0.8, using settings 'sample_app.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

ブラウザを開いて次のURLを入力します。
下のような画面が現れればDjangoサーバが動作していることを確認できました。

http://localhost:8000

ちなみにサーバを停止する場合は、「Ctrl + C」で停止できます。

まずは、一番初めということでプロジェクトを作成し、サーバを起動しました。

次回は簡単なWebページを表示させるプログラムを作成します。

以上です。ありがとうございました。

P.S.

勉強を継続することが苦手ですか?

少し前からココナラというサービスで習慣化のテクニックについて教えるサービスを始めました。

もし、いつも3日坊主で終わってしまうという方や、ダイエットを続けたい、勉強したい、運動したいなど何か習慣化したいと思っている方がいましたら全力でサポートしますので、まずは覗いてみてください。

すでに何人かの方に実践してもらって効果が出ているという感想をいただいてます。

人生変わる?【習慣化の方法】を教えます 【残り1名】ダイエット、勉強、運動を続けることが苦手ですか?

Pocket