前記事(っぽいなにか)
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]です。
まずは中身を見ていきましょう。
上半分くらいコメントアウトされているので、コメントアウトされてない部分のみです。
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.ログイン画面を作る。」です。