-2

django 1.4 でセッションを開くと、すべて問題ありません。いくつかのフォーム プロセスでページをリダイレクトすると、セッションを読み取ることができます

例 :

<form id="processForm" action="http://localhost:8000" method="post">{% csrf_token %} 
   <input type="submit" value="Search"></input>
</form> 

私は localhost:8000 と memcached で作業しています。問題は、セッションを開いた後、ブラウザーで localhost:8000 を検索すると、終了しないようにセッションを読み取れないことです。

コード:

ビュー.py

def search(request):     
    c = {}
    c.update(csrf(request))
    if request.session.get('name'):
        c.update({ 'hellomsg' : 'Hello:' + request.session["name"] })
    else:
        c.update({ 'hellomsg' : 'Hello: Guest' })        
    if request.method == 'POST':
        if request.POST['q']:
            if not request.POST['q'] == "false":                
                c.update({ 'output' : request.POST['q'] })
    return render_to_response("form.html", c, context_instance= RequestContext(request))

def open_session(request):
    c = {}    
    c.update(csrf(request))
    if not request.session.get('name'):
        if request.POST['nametxt']:
            request.session['name'] = request.POST['nametxt']
            c.update({ 'hellomsg' : 'Hello:' + request.POST['nametxt'] })
        else:
            c.update({ 'hellomsg' : 'Error...'})
    else:
        c.update({ 'hellomsg' : 'You're already logged in...'})
    return render_to_response("form.html", c, context_instance= RequestContext(request))

def close_session(request):
    c = {}
    c.update(csrf(request))
    if request.session.get('name'):
        try:
            del request.session['name']
            c.update({ 'hellomsg' : 'logged out...'})
        except KeyError:
            pass
    else:
        c.update({ 'hellomsg' : 'Error'})        
    return render_to_response("form.html", c, context_instance= RequestContext(request))  

urls.py

urlpatterns = patterns('',
    ('^$', search),
    ('^session/$', open_session),
    ('^csession/$', close_session),
)   
4

1 に答える 1

2

セッションは Django で自動的に作成されます。このページを参照してください。

セッションを読み書きするには、次のことができますrequest.session['someting']

于 2012-07-21T18:40:19.097 に答える