-1

したがって、POST フォームを受け取る場合と受け取らない場合がある index というビューがあります。私はこのような質問をここで見てきましたが、ほとんどの場合、それはビュー内の単純な論理エラーのように見えますが、私のビューの書き方では、レンダー呼び出しはすべての条件の外にあり、抽出されるようになっています。常に呼び出す必要があります。ビューは次のとおりです。

from django.shortcuts import render, render_to_response, redirect
from django.template import RequestContext
from django.http import HttpResponse, Http404

import datetime

myUsers = ['A', 'B', 'C', 'D', 'E', 'Guest']

def index(request):
    # grab user if we've submitted login form from this page
    if request.method == 'POST':
        if 'myUser' in request.POST:
            request.session['myUser'] = request.POST['myUser']
    # make login default guest if not logged in
    elif not 'myUser' in request.session:
        request.session['myUser'] = 'Guest'

    return render(request, 'home/index.html', {'myUsers': myUsers})

私は解決策についてかなり行き詰まっています。助けていただければ幸いです。

編集:ここにもトレースバックがあります。

Environment:


Request Method: GET
Request URL: http://transcode50.com/home/

Django Version: 1.5.1
Python Version: 2.7.3
Installed Applications:
('django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.sites',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'django.contrib.admin',
 'bootstrap_toolkit',
 'transcode',
 'transcode50',
 'home',
 'books')
Installed Middleware:
('django.middleware.common.CommonMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware')


Traceback:
File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response
  133.                     raise ValueError("The view %s.%s didn't return an HttpResponse object." % (callback.__module__, view_name))

Exception Type: ValueError at /home/
Exception Value: The view home.views.index didn't return an HttpResponse object.
4

2 に答える 2

-1

次のように微調整する必要があると思います。

if request.method == 'POST':
     for user in myUsers:
        if user in request.POST:
            request.session['myUser'] = request.POST['myUser']

request.POST は辞書のようなオブジェクトで、 myUsers はリストです。Pythonで直接request.POSTでmyUserを実行できるとは思いません。その私の2セント。

于 2013-08-06T20:33:32.520 に答える