djangoで画面遷移制御ってどうやるんだろう・・・
viewsがいわゆるControllerにあたるらしい。
で、templateがいわゆるViewにあたるらしい。
まだまだ勉強中なので、いずれ見つかるかもしれないけど、
とりあえず分からないので
input type="submit"のname属性と現ページを保持する
_pageパラメータで遷移することにした。
form.html、confirm.html、complete.html
の3つのページがあるものとして、
form.htmlは入力フォーム、confirm.htmlは確認画面、
complete.htmlは完了画面。
form.htmlで、
- <input type="hidden" name="_page" value="0" />
- <input type="submit" name="_target1" value="次へ" />
とし、
confirm.htmlでは
- <input type="hidden" name="_page" value="1" />
- <input type="submit" name="_target0" value="戻る" />
- <input type="submit" name="_finish" value="登録" />
などとして、遷移制御。
Spring Framework(?)のまね。
views.pyでは
- _page_re = re.compile(r'^_page$')
- def _get_current_page(request, defvalue):
- for key in request.POST.iterkeys():
- if _page_re.match(key):
- return int(request.POST['_page'])
- return defvalue
ってな感じでgetCurrentPageを実装。
そして、
- target_re = re.compile(r'^_target(\d)')
- finish_re = re.compile(r'^_finish$')
- TARGET = [
- u'form.html',
- u'confirm.html',
- u'complete.html',
- ]
- def _get_target_page(request, defvalue):
- for key in request.POST.iterkeys():
- if target_re.match(key):
- p_no = target_re.search(key)
- return int(p_no.group(1))
- if finish_re.match(key):
- return len(TARGET)-1
- return defvalue
って感じでgetTargetPageを実装。
んで、currentとtargetを使って表示すべき画面をrenderすると。
でも、これだとdjangoのやり方では無いのではないかなぁ。。。
うーむ。。。。
.
----
って書いてて気づいたけど
has_keyした方がいいね!
.
0 コメント:
コメントを投稿