views.py
def first_view(request):
if request.method == "POST":
# not using a django form in the template, so need to parse the request POST
# create a dictionary with only strings as values
new_post = {key:val for key,val in request.POST.items() if key != 'csrfmiddlewaretoken'}
request.session['new_post'] = new_mappings # save for use within next view
# more logic here (nothing involving views)
return redirect('second_view')
def second_view(request):
if request.method == 'POST':
new_post = request.session['new_post']
# ... more code below
# render template with form that will eventually post to this view
私は時々、2番目のビューに掲示した後、KeyError例外を受け取ることになります。 documentation on when sessions are savedに基づいて、セッション変数をセーブする必要があるのは、セッションを直接変更するためです。私は、セッションIDは、エラー・ページのデバッグパネルを提供取り、DjangoのAPIを経由してセッションにアクセスする場合にも、私は「new_post」セッションを見ることができる変数
python manage.py shell
>>> from django.contrib.sessions.backends.db import SessionStore
>>> s = SessionStore(session_key='sessionid_from_debug_panel')
>>> s['new_post']
# dictionary with expected post items
私は欠けているものはありますか?あなたの助けを前もってありがとう!
この変数はどのようなものですか? – Exprator
new_post変数は、dictionary comprehensionでrequest.POST QueryDictを使用して作成している辞書です。値はすべて文字列です。 – atm
申し訳ありませんが、変数new_mappingsの名前が見つかりませんでしたか? Rあなたは確かにその空白ではない?または、new_postの代わりに入力すると間違っていますか? – Exprator