LoginSignup
5
2

More than 3 years have passed since last update.

Wagtailを触ってみた(2)。django-extensionsの導入。

Posted at

はじめに

こんにちは。

Wagtailを使って開発を進めていきたいところですが、現状ではデバッグ等に必要なライブラリが何もインストールされていません。
デバッグで使えるDjangoのライブラリといえば、django-extensionsdjango-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を使ってページを表示させよう

追加したコードは下記の通りです。

home/views.py
from django.http import HttpResponse

def index(request):
    return HttpResponse("Hello, world.")

home/urls.py

from django.conf.urls import url
from . import views

urlpatterns = [
    url(r'^$', views.index, name='index'),
]

mysite/urls.py
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.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

では、下記のようにコードを編集してみましょう。

home/views.py
return HttpReesponse("Hello, world.") # わざと間違える

スクリーンショット 2019-12-24 19.30.26.png
                    エラー画面

スクリーンショット 2019-12-24 19.31.24.png
                   エラー画面下部

右側にターミナルのようなボタンがあります。
そこをクリックして、先ほどメモしたPINコードを記入すればデバッグが可能です。
Pythonのコードが対話的に実行できるので、変数などのオブジェクトの値が調べられますね。


さいごに

今回は、django-extensionsをプロジェクトに導入してみました。
次こそはWagtailを触っていきたいと思います。

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