0
0

More than 3 years have passed since last update.

Djangoでbitflyerの収支管理アプリを作ってみる(01.URLマッピングを作成する。)

Last updated at Posted at 2019-12-29

前記事(っぽいなにか)

Djangoでbitflyerの収支管理アプリを作ってみる(00.事前準備とプロジェクト作成編)
https://qiita.com/redmeteor777/items/54178a7229b70fce55b3

着手する前にMVCを理解しておきたかったので書いたやつ

Djangoでbitflyerの収支管理アプリを作ってみる(90.[MVC]という概念を理解したい)
https://qiita.com/redmeteor777/items/76fc4df4c0d330297ca2

今回はまずログイン画面、新規ユーザー登録画面を含むアプリケーションを作成します。

# manage.pyがあるディレクトリで以下を実行
# これはアプリケーション作成のコマンド
# [login]という名前のアプリケーションを新規作成する
>python manage.py startapp login

# ディレクトリの中身を確認してみる
>dir
2019/12/29  16:19    <DIR>          .
2019/12/29  16:19    <DIR>          ..
2019/12/29  13:48    <DIR>          bfmonitor
2019/12/29  13:48                 0 db.sqlite3
2019/12/29  16:19    <DIR>          login

おっと、そういえばデフォルトのデータベースはSQLiteになってるんでした。
これはのちほどPostgresに変更します。

# loginディレクトリが出来ているので、とりあえず中身を見に行ってみる
>cd login
>dir

2019/12/29  16:19    <DIR>          .
2019/12/29  16:19    <DIR>          ..
2019/12/29  16:19                66 admin.py
2019/12/29  16:19                90 apps.py
2019/12/29  16:19    <DIR>          migrations
2019/12/29  16:19                60 models.py
2019/12/29  16:19                63 tests.py
2019/12/29  16:19                66 views.py
2019/12/29  16:19                 0 __init__.py

なんか色々なファイルが出来てます。
使うのは今回のパートではなく後々なので、しばらく置いておきます。

1つ上のディレクトリに戻って、bfmonitor内のbfmonitorディレクトリに移動します。(ほんと紛らわしい)

>cd ..
>cd bfmonitor
>cd dir

2019/12/29  13:07               411 asgi.py
2019/12/29  13:07             3,217 settings.py
2019/12/29  13:07               772 urls.py
2019/12/29  13:07               411 wsgi.py
2019/12/29  13:07                 0 __init__.py

今回いじるのは、ここにある[urls.py]です。
まずは中身を見ていきましょう。
上半分くらいコメントアウトされているので、コメントアウトされてない部分のみです。

urls.py
from django.contrib import admin
from django.urls import path

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

これが今回の肝になる部分です。

path(アクセスするアドレス , 呼び出される処理)

って感じでアクセスするページの情報を書いていきます。

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

urlpatterns = [
    path('admin/', admin.site.urls),
    path('login/', login.login),
    path('registration/', login.registration),

]

ここでやってることを順に。

import login.views as login

loginディレクトリにあるviews.pyを[login]という名前でインポートします。
紛らわしくて本当にすみません…

urlpatterns = [
    path('admin/', admin.site.urls),
    path('login/', login.login),
    path('registration/', login.registration),

]

login/にアクセスしたら、[login]に書かれている[login]という関数を実行。
registration/にアクセスしたら、[login]に書かれている[registration]という関数を実行。

つまり、views.pyに書かれているregistration関数を実行することになるわけですね。

しかし、まだviews.pyにそんな関数は書かれていません。
この状態でrunserverを実行するとどうなるでしょうか?

>python manage.py runserver

File "C:\Users\Owner\Desktop\bitflyer_monitor\bfmonitor\bfmonitor\urls.py", line 22, in <module>
    path('login/', login.login),
AttributeError: module 'login.views' has no attribute 'login'

はい。
「loginディレクトリにあるviews.pyファイルには、loginという関数ないっすよ」
というエラーですね。

関数未定義だと[NameError: name 'hogehoge' is not defined]が出そうなものですが、ここではimportしてオブジェクトとして呼び出しているのでAttributeErrorが出ている…とかそんな感じでしょうか?

というわけで、まずはここまで編集したら、アクセスする前にviews.pyを編集しに行きます。

というわけで次回は「02.ログイン画面を作る。」です。

0
0
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
0
0