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 コメント:
コメントを投稿