【django】チュート1 modelを作成してみる。
まずはアプリケーションを作成します。
アプリケーションを作成するには、 アプリケーション(仮:polls)を作りたい ディレクトリの下に入って、
以下のようなコマンド:
python manage.py startapp アプリケーション名(polls)
を入力。
するとアプリケーション名(polls)のディレクトリが作成され、
中身は以下のようになります
__init__.py
models.py
views.py
views.pyを変更して今回は
投票項目 (poll) と選択肢 (choice) の二つのモデルを作成します。 poll には質問事項 (question) と公開日 (publication date) の情報があります。 choice には選択肢のテキストと投票数 (vote) という二つのフィールドがあります。
以下のように書きます。
from django.db import models
class Poll(models.Model):
question = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')class Choice(models.Model):
poll = models.ForeignKey(Poll)
choice = models.CharField(max_length=200)
votes = models.IntegerField()
これでpollとChoiceというモデルは 作成 されました。
作成されただけでは使うことができません。
.CharField(max_length=200)
文字のフィールド max_length=は最大文字数
- -
.DateTimeField('date published')
日時フィールドです
- -
.ForeignKey(Poll)
多対一のリレーションです。必須の固定引数として、リレーションを張るモデルのクラスをとります。
ここではpollにリレーションを張っている。
【django】チュート2 modelを有効にする。
モデルは作成されただけでは使うことができません。
有効化するには、settings.py ファイルを編集して、 INSTALLED_APPS 設定を変更し、
'プロジェクト名.アプリケーション名'( 仮:'mysite.polls') を入れます。
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'mysite.polls'
)
syncdb を再度実行して、モデルテーブルをデータベース上に作成しましょう:
python manage.py syncdb
【django】チュート3 URL 構造の設計
公開用のインタフェース、ビュー(view) の作成をするのですが、
そのまえにviewとURLを結びつける必要があります。
プロジェクト名/urls.py(仮:mysite/urls.py) を編集します
基本的には
urlpatterns = patterns('',
)
の中身に
urlpatterns = patterns('',
(r'^URL(例 poll)', 'プロジェクト名.アプリ名.views.関数名(def indexならindex)(例mysite.polls.views.index)'),)
を書き足します。
さらに例えば "/polls/23"とURLにいれて23というの引数をで渡したい場合
(r'^polls/(?P
\d+)/$', 'mysite.polls.views.detail')
とすれば
Django は以下のような引数で detail() を呼び出します:
detail(request=
, poll_id='23')
poll_id='23' の部分は、 (?P
【django】チュート4 ビューの作成
ビューを書きましょう。
プロジェクト名.アプリ名.views.py(仮mysite/polls/views.py) というファイルを開いて編集します。
よくあるのは下記のパターン
例:
from django.shortcuts import render_to_response
from mysite.polls.models import Polldef index(request):
latest_poll_list = Poll.objects.all()
return render_to_response('polls/index.html',{'latest_poll_list': latest_poll_list})
- -
from django.shortcuts import render_to_response
from プロジェクト名.アプリ名.models import モデル名def ビュー名(request):
内容
return render_to_response('template内htmlのroot',渡したい辞書)