0

Django でログインフォームを作成しています。ログイン送信ボタンをクリックすると、エラーが発生します

/registration/ の ValueError ビュー registration.views.login が HttpResponse オブジェクトを返しませんでした。

ビューファイルは

from django.template import  loader
from django.shortcuts import render
from registration.models import Registration
from django.http import HttpResponse
def login(request):
  if request.method == 'POST':
    user = authenticate(username=request.POST['username'], password=request.POST['password'])
    if user is not None:
      if user.is_active:
        login(request, user)
        # success
        return HttpResponseRedirect('sucess')
      else:
        # disabled account
        return direct_to_template(request, 'inactive_account.html')
    else:
      # invalid login
      return direct_to_template(request, 'invalid_login.html')

def logout(request):
  logout(request)
  return direct_to_template(request, 'logged_out.html')

そしてlogin.htmlファイルは

<h3>Login</h3>
<form action="/login/" method="post" accept-charset="utf-8">
<label for="username">Username:--</label><input type="text" name="username" value="" id="username" /><br>
<label for="password">Password:-- </label><input type="password" name="password" value="" id="password" />
<p><input type="submit" value="Login →"></p>
</form>
4

3 に答える 3

1

ログインビューは、POST リクエストに対してのみ (フォーム送信時) HttpResponse を返します。ブラウザーをログイン ページにアドレス指定すると、ビューで処理されない GET 要求が行われます。

ユーザー認証について詳しく読むことをお勧めします: doc

そして、前述のように、使用renderまたはrender_to_response機能from django.shortcuts

于 2012-08-28T11:11:55.607 に答える
0

代わりに、与えられたテンプレートをレンダリングして HttpResponse を返すdirect_to_templateを使用したい場合があります。render_to_response

render_to_responseを参照してください。ノート; を使用してインポートする必要がありますfrom django.shortcuts import render_to_response

于 2012-08-28T11:11:05.023 に答える
0

なぜあなたは使っていないのですrender_to_response か?

あなたの質問の答えは、あなたがHttpresponseオブジェクトを返していないということです

ログインが成功すると、あなただけが success にリダイレクトされます。

これを試して

 return render_to_response(your_template_name, 
                              context_instance=RequestContext(request))

次のように context_instance をインポートすることを忘れないでください

from django.template import RequestContext
于 2012-08-28T11:12:28.370 に答える