1

views.py

from textize.models import Textizer
from django.http import HttpResponseRedirect
from django.shortcuts import render_to_response
from django.core.context_processors import csrf

def index(request):
    if request.method == 'POST':
        form = Textizer(request.POST)
        print "debug 0"  # <---It's not reaching this point when I submit the data via the form
        if form.is_valid():  #check to see if the input is valid
            print "debug 1"
            request.session['text'] = form.cleaned_data['to_textize']  #set the session key:value pair
            return HttpResponseRedirect('/results') #redirect to the results page

    else:
        form = Textizer()
        print "debug 2" # reaches here

    c = {'form': form}
    c.update(csrf(request))

    return render_to_response('index.html', c)

def results(request):
    text = request.session.get("text", "dummy")
    c = {'text' : text}
    return render_to_response('results.html', c)

index.html

<form action="/results" method="POST"> {% csrf_token %}
    {{ form.as_p }}
    <input type="submit" value="Submit" />
</form> 

results.html

<b>Input text: </b>{{ text }} 

「インデックス」ページから「結果」ページにデータを渡そうとしています。この場合、入力して送信した文字列を結果ページに表示したいと思います。

私のフォームの何が問題になっていますか?

また、セッションkey:valueを正しく形成していますか?

4

1 に答える 1

1
from textize.models import Textizer
from django.http import HttpResponseRedirect
from django.shortcuts import render_to_response
from django.core.context_processors import csrf

def index(request):

    form = Textizer(request.POST or None)

    if request.method == 'POST':
        print "debug 0"
        if form.is_valid():
            print "debug 1"
            request.session['text'] = form.cleaned_data['to_textize']

    c = {'form': form, 'text':request.session.get("text", "")}
    c.update(csrf(request))

    return render_to_response('index.html', c)

次にテンプレートindex.html

<form action="" method="POST"> {% csrf_token %}
    {{ form.as_p }}
    <input type="submit" value="Submit" />
</form> 
result: {{ text }}

これを実行するには十分です。

于 2012-08-04T11:52:24.737 に答える