はじめに
こんにちは。
Wagtailを使って開発を進めていきたいところですが、現状ではデバッグ等に必要なライブラリが何もインストールされていません。
デバッグで使えるDjangoのライブラリといえば、django-extensionsかdjango-debug-toolbarなどが挙げられますね。それしか知らないらしい
そこで今回は、django-extensionsを導入したので、その流れをまとめました。Djangoのライブラリについても調査してみたいと思います。
django-extensionsの導入
django-extensionsの導入の流れについて書いておきます。
僕はmacでやりました。
まず、下記コマンドを実行します。
pip install django-extensions
次に、mysite/settings/base.pyのINSTALLED_APPSにdjango-extensionsを追記します。
これだけで基本機能は使えますが、一部使えないものがあります。
モデルのER図(後述)が生成できるコマンドがありますが、それにはいくつかの手順が必要でした。
brew install Graphviz
pip install pygraphviz
エラーが出てうまくいかなかったですが、このISSUEを見れば解決できました。
参考:Cannot install pygraphviz on Mac OS 10.11.6
django-extensionsを試す
□show_urls
django-extensionsの機能はなかなか便利ですよ。
一つ目に紹介するものは、show_urlsです。
python manage.py show_urls
Djangoのプロジェクトに設定されているURLの「View」や「template」における関係が一覧となって表示されます。
この表現だとわかりにくいと思うので、まずは実行ログをみてみましょう。(一部抜粋)
/django-admin/login/ django.contrib.admin.sites.login admin:login
/django-admin/logout/ django.contrib.admin.sites.logout admin:logout
/django-admin/password_change/ django.contrib.admin.sites.password_change admin:password_change
/django-admin/password_change/done/ django.contrib.admin.sites.password_change_done admin:password_change_done
左側の/django-admin/login/などは、
http://localhost:8000/
の後に続くパス(URLパターン)を表しています。
中央のdjango.contrib.admin.sites.loginなどは、view関数の所在を表しています。
djangoのGithubでdjango.contirib.admin.sitesを見てみましょう。login関数があることが分かりますね。
右側のadmin:loginなどはパスの名前を表しています。
url_patternsにURLを設定する時に、第三引数に
name="hogehoge"
のように書きますよね。そのnameがこれに当たります。
試しに、一つview関数を追加して、それをshow_urlsを使って調べてみたいと思います。
参考サイトを元に、コードを書いていきます。
参考:【Django入門】viewsを使ってページを表示させよう
追加したコードは下記の通りです。
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world.")
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$', views.index, name='index'),
]
from home import views as home_views # 上部に追記
url(r'^home/', include('home.urls')) # urlpatternsのリスト内に追記
ここをクリックしてHello, world.が表示されたらOKです。
では、下記のコマンドを実行してみましょう。
python manage.py show_urls | grep home
/home/ home.views.index index
表示されましたね。
viewをインポートするときやテンプレートにURLを記入するときなどで重宝します。
参考:DjangoアプリのURLリンクの貼り方とメリット
□ER図
参考:ER図(Entity Relationship Diagram)
django-extensionsではコマンド一つでプロジェクトのER図をpngで生成できます。
データベース設計の時に使える優れものです。
では、コマンドを実行して確認してみましょう。
python manage.py graph_models -a -o mysite_er.png
同ディレクトリ上にmysite_er.pngが生成されていると思います。
ER図
□runserver_plus
今回はもう一つ紹介しておきます。
デバッグをWebブラウザ上で実行できる優れものです。
早速コマンドを実行してみましょう。
python manage.py runserver_plus
すると、、
CommandError: Werkzeug is required to use runserver_plus. Please visit http://werkzeug.pocoo.org/ or install via pip. (pip install Werkzeug)
言われるがままにWekzeugをインストールして再挑戦です。
普通のrunserverとなんか違いますね。
ログの最終行にこのようなものがあります。
これを後から使うのでメモしておきましょう。
* Debugger PIN: xxx-xxx-xxx
では、下記のようにコードを編集してみましょう。
return HttpReesponse("Hello, world.") # わざと間違える
右側にターミナルのようなボタンがあります。
そこをクリックして、先ほどメモしたPINコードを記入すればデバッグが可能です。
Pythonのコードが対話的に実行できるので、変数などのオブジェクトの値が調べられますね。
さいごに
今回は、django-extensionsをプロジェクトに導入してみました。
次こそはWagtailを触っていきたいと思います。