カテゴリー
ブログ 開発

開発 備忘録 Django 〜機能〜

[fusion_builder_container backgroundcolor=”” backgroundimage=”” backgroundrepeat=”no-repeat” backgroundposition=”left top” backgroundattachment=”scroll” video_webm=”” video_mp4=”” video_ogv=”” video_preview_image=”” overlay_color=”” overlay_opacity=”0.5″ video_mute=”yes” video_loop=”yes” fade=”no” bordersize=”0px” bordercolor=”” borderstyle=”” paddingtop=”20px” paddingbottom=”20px” paddingleft=”0px” paddingright=”0px” menu_anchor=”” equal_height_columns=”no” hundred_percent=”no” class=”” id=””][fusion_builder_row][fusion_builder_column type=”1_1″ background_position=”left top” background_color=”” border_size=”” border_color=”” border_style=”solid” spacing=”yes” background_image=”” background_repeat=”no-repeat” padding=”” margin_top=”0px” margin_bottom=”0px” class=”” id=”” animation_type=”” animation_speed=”0.3″ animation_direction=”left” hide_on_mobile=”no” center_content=”no” min_height=”none”][fusion_text]Djyangoについて、設計思想をご紹介しました。このエントリでは、機能について触れたいとおもいます。[/fusion_text][/fusion_builder_column][/fusion_builder_row][/fusion_builder_container][fusion_builder_container hundred_percent=”yes” overflow=”visible”][fusion_builder_row][fusion_builder_column type=”4_5″ last=”no” spacing=”yes” background_color=”” background_image=”” background_repeat=”no-repeat” background_position=”left top” border_size=”0px” border_color=”” border_style=”” padding=”” class=”” id=””][fusion_text]

O/Rマッパー

まず最初にご紹介するのは、O/Rマッパーです。
wikiに紹介されているように、Object-relational mappingの略称で、「データベースとオブジェクト指向プログラミング言語の間の非互換なデータを変換するプログラミング技法」でありそのツール/機能です。
このO/Rマッパーの存在で、SQLを書かずに、プログラミングをすることができるようになります。
Djangoでは、

  • インストール直後からSQLiteというDBが添付されています
  • Djangoプロジェクトを作成すると、setting.pyというファイルに、SQLite3を使うよう記述があります。例えばgrepで見つけることができます

    $ grep -n django.db.backends.sqlite3 mybook/*.*
    mybook/settings.py:64:        ‘ENGINE’: ‘django.db.backends.sqlite3’,

  • 上記を利用するには、マイグレーションという手続きが必要です。具体的には下記のとおりです。
    $ python manage.py migrate
    

これらの手順については、別途Django projectのエントリを参考にしてください。[/fusion_text][/fusion_builder_column][fusion_builder_column type=”1_5″ last=”yes” spacing=”yes” background_color=”” background_image=”” background_repeat=”no-repeat” background_position=”left top” border_size=”0px” border_color=”” border_style=”” padding=”” class=”” id=””][fusion_text]
[/fusion_text][/fusion_builder_column][fusion_builder_column type=”1_5″ last=”no” spacing=”yes” background_color=”” background_image=”” background_repeat=”no-repeat” background_position=”left top” border_size=”0px” border_color=”” border_style=”” padding=”” class=”” id=””][fusion_text]
[/fusion_text][/fusion_builder_column][fusion_builder_column type=”4_5″ last=”yes” spacing=”yes” background_color=”” background_image=”” background_repeat=”no-repeat” background_position=”left top” border_size=”0px” border_color=”” border_style=”” padding=”” class=”” id=””][fusion_text]

正規表現ベースのURL管理

正規表現というのは、文字列の集合を一つの文字列で表現する方法です。wikiに掲載されている用例が非常にわかりやすいので、ご紹介します。

  • Handel」、「Hendel」、「Haendel」 という三つの文字列を含む集合は 「H(e|ae?)ndel」 というパターンで表現できる。
  • ほとんどの形式では正規表現を構築するのに次の演算子を提供している
    • 選言
      縦棒は選択肢を区切る。例えば「gray|grey」は「gray」または「grey」にマッチし、これは普通 「gr(a|e)y」 に短縮される。
    • グループ分け
      丸括弧はスコープと演算子の優先順位を定義するのに用いられる。例えば、「gr(a|e)y」 では 「(a|e)」 の部分で 「a」 または 「e」 を示し、全体で 「gray」 または 「grey」 にマッチする。
    • 量化
      文字やグループの後ろの量化子は、直前の表現が何回現れることが許されるかを指定する。非常によく使われる量化子は 「?」 と 「*」 と 「+」 である。
    • ?(疑問符)
      疑問符は直前の表現が0個か1個あることを示す。例えば、「colou?r」 は 「color」 と 「colour」 にマッチする。
    • *(アスタリスク)
      アスタリスクは直前の表現が0個以上あることを示す。例えば、「go*gle」 は 「ggle」、「gogle」、「google」 などにマッチする。
    • +
      プラス符号は直前の表現が1個以上あることを示す。例えば、「go+gle」 は 「gogle」 や 「google」 などにマッチするが、「ggle」 にはマッチしない。

これらの構文は任意の複雑な表現を形成するために組み合わされて使用される。

このような正規表現があれば、Webアプリケーションで使うURLをとても簡単に短く扱うことができます。[/fusion_text][/fusion_builder_column][/fusion_builder_row][/fusion_builder_container][fusion_builder_container backgroundcolor=”” backgroundimage=”” backgroundrepeat=”no-repeat” backgroundposition=”left top” backgroundattachment=”scroll” video_webm=”” video_mp4=”” video_ogv=”” video_preview_image=”” overlay_color=”” overlay_opacity=”0.5″ video_mute=”yes” video_loop=”yes” fade=”no” bordersize=”0px” bordercolor=”” borderstyle=”” paddingtop=”20px” paddingbottom=”20px” paddingleft=”0px” paddingright=”0px” menu_anchor=”” equal_height_columns=”no” hundred_percent=”no” class=”” id=””][fusion_builder_row][fusion_builder_column type=”1_1″ background_position=”left top” background_color=”” border_size=”” border_color=”” border_style=”solid” spacing=”yes” background_image=”” background_repeat=”no-repeat” padding=”” margin_top=”0px” margin_bottom=”0px” class=”” id=”” animation_type=”” animation_speed=”0.3″ animation_direction=”left” hide_on_mobile=”no” center_content=”no” min_height=”none”][fusion_text]正規表現を学習したり、確認するために便利なWebサイトをいくつかご紹介しておきます。

  • http://scriptular.com/
    正規表現と文字列を入力するとマッチする文字列をハイライトしてくれる
  • strfriend(削除されたらしい)
    正規表現を視覚化してくれるサイトで以前遊んだことがありますが、2014年1月時点で表示されません
  • PHP正規表現チェッカーの類
    PHP正規表現チェッカーでぐぐると、いくつか登場します
  • Rubular
    Ruby向けの正規表現チェッカー。入力がスムーズで使いやすいです。

[/fusion_text][/fusion_builder_column][/fusion_builder_row][/fusion_builder_container][fusion_builder_container backgroundcolor=”” backgroundimage=”” backgroundrepeat=”no-repeat” backgroundposition=”left top” backgroundattachment=”scroll” video_webm=”” video_mp4=”” video_ogv=”” video_preview_image=”” overlay_color=”” overlay_opacity=”0.5″ video_mute=”yes” video_loop=”yes” fade=”no” bordersize=”0px” bordercolor=”” borderstyle=”” paddingtop=”20px” paddingbottom=”20px” paddingleft=”0px” paddingright=”0px” menu_anchor=”” equal_height_columns=”no” hundred_percent=”no” class=”” id=””][fusion_builder_row][fusion_builder_column type=”1_1″ background_position=”left top” background_color=”” border_size=”” border_color=”” border_style=”solid” spacing=”yes” background_image=”” background_repeat=”no-repeat” padding=”” margin_top=”0px” margin_bottom=”0px” class=”” id=”” animation_type=”” animation_speed=”0.3″ animation_direction=”left” hide_on_mobile=”no” center_content=”no” min_height=”none”][fusion_text]

自動生成される管理画面

Djangoの便利なところに管理画面が自動生成されることがあります。
$ python manage.py runserver
その後、ブラウザでhttp://127.0.0.1:8000/admin/ にアクセス

すると、こんな画面が表示されます。
django_login
 
この画面から、設定したスーパーユーザでログインすると、グループ/ユーザ管理画面に遷移します。とても簡単に、管理系画面ができてしまうのです。ユーザやグループの管理、ログイン等は、何回も同じようなものを開発し続けるのもよくありませんので、最初から用意されていて損はないでしょう。[/fusion_text][/fusion_builder_column][/fusion_builder_row][/fusion_builder_container][fusion_builder_container backgroundcolor=”” backgroundimage=”” backgroundrepeat=”no-repeat” backgroundposition=”left top” backgroundattachment=”scroll” video_webm=”” video_mp4=”” video_ogv=”” video_preview_image=”” overlay_color=”” overlay_opacity=”0.5″ video_mute=”yes” video_loop=”yes” fade=”no” bordersize=”0px” bordercolor=”” borderstyle=”” paddingtop=”20px” paddingbottom=”20px” paddingleft=”0px” paddingright=”0px” menu_anchor=”” equal_height_columns=”no” hundred_percent=”no” class=”” id=””][fusion_builder_row][fusion_builder_column type=”1_1″ background_position=”left top” background_color=”” border_size=”” border_color=”” border_style=”solid” spacing=”yes” background_image=”” background_repeat=”no-repeat” padding=”” margin_top=”0px” margin_bottom=”0px” class=”” id=”” animation_type=”” animation_speed=”0.3″ animation_direction=”left” hide_on_mobile=”no” center_content=”no” min_height=”none”][fusion_text]この後、
テンプレートシステム
キャッシュシステム
国際化サポート
を書く予定です。[/fusion_text][/fusion_builder_column][/fusion_builder_row][/fusion_builder_container]