Django学習ノート2:簡単な開発例
9131 ワード
Technoratiラベル:
Python ,
Django
目標:簡単なTodo管理アプリケーションを開発することによって、Djangoの基本概念、使用を熟知する.
実行環境
Windows Vista + Python 2.7 + Django 1.5
準備作業
*プロジェクトの作成
python C:\Python27\Lib\site-packages\django\bin\django-admin.py startproject mytodo
*デバッグサーバの起動
python manage.py runserver
Validating models...
0 errors found
October 11, 2012 - 11:06:08
Django version 1.5, using settings 'mytodo.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
ブラウザでhttp://127.0.0.1:8000/にアクセスし、正常にアクセスできます.
*データベースの構成
変更するpy、sqlite 3を使用します.
データベース・テーブル・アイテムの生成:python manage.py syncdb
*タイムゾーン構成の変更
TIME_ZONE = 'Asia/Shanghai'
#Todo機能を実現するModelの作成
python manage.py startapp todo
準備が完了し、次はtodo modelの開発を行います.
応用モデルの開発
*settings構成
編集するpyの次のプロパティ:
INSTALLED_APPS:todo modelのサポートを追加する;
TEMPLATE_DIRS:モジュールが使用するtemplate位置を構成する;
*Modelの実装
todo/modelsでpyファイルでデータベースを定義する
ここでは、task,status,createの3つのフィールドを含むデータベーステーブルTodoEntryを定義します.date.
*URLの設定
mytodo/urlを編集します.pyのurlpatternsで、次の構成を追加します.
表示、追加、削除機能の3つのview関数を実装します.
*View関数実装
todo/views.pyファイルでview関数を実装します.
説明:1)todo/indexをロードする.htmlテンプレート、変数名all_todo_listはテンプレートにデータを渡します.2)テンプレートファイルの{%csrf_token%}タグの要件に合わせてコンテキストインスタンスを入力します.
説明:1)HttpRequest.POSTはフォームから提供されたデータを取得し、'task_msg’は、フォームに入力されたテキストボックスのname属性です.2)データの追加後、HttpResponseRedirectを呼び出して開始ページに戻る.
摘要:削除する場合は、entry_を介して削除されたエントリのIDを指定する必要があります.idが入る.URL定義では、IDがキャプチャされ、Pはkeywordパラメータを定義します.
*Template定義
view関数では、テンプレートファイルtodo/indexが参照されます.htmlは、次のように実現されます.
説明:1)フォームはPOSTタイプを使用した;2)変数entryを使用する.idはIDをURLに記入し、削除操作を特定のエントリに位置決めする.
-----------------
Weichsel
2012.10.15
Python ,
Django
目標:簡単なTodo管理アプリケーションを開発することによって、Djangoの基本概念、使用を熟知する.
実行環境
Windows Vista + Python 2.7 + Django 1.5
準備作業
*プロジェクトの作成
python C:\Python27\Lib\site-packages\django\bin\django-admin.py startproject mytodo
*デバッグサーバの起動
python manage.py runserver
Validating models...
0 errors found
October 11, 2012 - 11:06:08
Django version 1.5, using settings 'mytodo.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
ブラウザでhttp://127.0.0.1:8000/にアクセスし、正常にアクセスできます.
*データベースの構成
変更するpy、sqlite 3を使用します.
データベース・テーブル・アイテムの生成:python manage.py syncdb
*タイムゾーン構成の変更
TIME_ZONE = 'Asia/Shanghai'
#Todo機能を実現するModelの作成
python manage.py startapp todo
準備が完了し、次はtodo modelの開発を行います.
応用モデルの開発
*settings構成
編集するpyの次のプロパティ:
INSTALLED_APPS:todo modelのサポートを追加する;
TEMPLATE_DIRS:モジュールが使用するtemplate位置を構成する;
*Modelの実装
todo/modelsでpyファイルでデータベースを定義する
class TodoEntry(models.Model):
task = models.CharField(max_length=120)
status = models.IntegerField()
create_date = models.DateTimeField('create date')
def __unicode__(self):
return self.task
ここでは、task,status,createの3つのフィールドを含むデータベーステーブルTodoEntryを定義します.date.
*URLの設定
mytodo/urlを編集します.pyのurlpatternsで、次の構成を追加します.
url(r'^todo/$', 'todo.views.index'),
url(r'^todo/add/$', 'todo.views.add'),
url(r'^todo/del/(?P<entry_id>\d+)/$', 'todo.views.delete'),
表示、追加、削除機能の3つのview関数を実装します.
*View関数実装
todo/views.pyファイルでview関数を実装します.
# 'todo.views.index'
def index(request):
all_todo_list = TodoEntry.objects.all().order_by('-create_date')
return render_to_response('todo/index.html', {'all_todo_list' : all_todo_list}, context_instance = RequestContext(request))
説明:1)todo/indexをロードする.htmlテンプレート、変数名all_todo_listはテンプレートにデータを渡します.2)テンプレートファイルの{%csrf_token%}タグの要件に合わせてコンテキストインスタンスを入力します.
# 'todo.views.add'
def add(request):
try:
task_msg = request.POST['task_msg']
entry = TodoEntry(task = task_msg, status = 1, create_date = timezone.now())
entry.save()
except (KeyError):
return render_to_response('todo/index.html', {'error_msg' : "no task msg isprovided!"}, context_instance = RequestContext(request))
return HttpResponseRedirect("/todo/")
説明:1)HttpRequest.POSTはフォームから提供されたデータを取得し、'task_msg’は、フォームに入力されたテキストボックスのname属性です.2)データの追加後、HttpResponseRedirectを呼び出して開始ページに戻る.
# 'todo.views.delete'
def delete(request, entry_id):
entry = get_object_or_404(TodoEntry, pk=entry_id)
entry.delete()
return HttpResponseRedirect("/todo/")
摘要:削除する場合は、entry_を介して削除されたエントリのIDを指定する必要があります.idが入る.URL定義では、IDがキャプチャされ、P
*Template定義
view関数では、テンプレートファイルtodo/indexが参照されます.htmlは、次のように実現されます.
<form action = "/todo/add/" method = "POST">
{% csrf_token %}
New: <input type = "text" name = "task_msg" />
<input type = "submit" value = "Add" />
</form>
{% if all_todo_list %}
{% for entry in all_todo_list %}
<p> {{ entry.task }}
<a href="/todo/del/{{ entry.id }}/"> delete </a>
</p>
{% endfor %}
{% else %}
<p>No todo entry are available.</p>
{% endif %}
説明:1)フォームはPOSTタイプを使用した;2)変数entryを使用する.idはIDをURLに記入し、削除操作を特定のエントリに位置決めする.
-----------------
Weichsel
2012.10.15