0
Djangoのログインとサインアップの区別に問題があります。私は正常にサインアップフォームを作成することができました(サインアップ時にユーザーもログインします)。私はフォームで別のサインを作るのに苦労しています。Djangoでのユーザーログイン、認証、サインアップ1.10
次のコードは、フォームに 'username'と 'password'フィールドを正しく表示します。 「送信」をクリックすると、情報はユーザオブジェクトとして保存され、正規化されてからデータベースに保存され、ユーザにログインするために使用されます。
私はでユーザーとログユーザーを追加する間の違いを生むだろうと思ったので、私はuser.save()の行を削除しようとしました。しかし、私の端末は、これが起こると、失敗した投稿要求( "POST/polls/HTTP/1.1" 200 1227)を表示します。
アカウント情報が既にデータベースに存在する場合、ユーザーにサインインさせるためにできることを教えてください。ありがとう!
class LoginFormView(View):
form_class = LoginForm
template_name = 'polls/login_form.html'
#display blank form using get
def get(self, request):
form = self.form_class(None)
return render(request, self.template_name, {'form': form})
#process the form data using post
def post(self, request):
form = self.form_class(request.POST)
if form.is_valid():
user = form.save(commit=False)
#cleaned and normalized data
username = form.cleaned_data['username']
password = form.cleaned_data['password']
user.set_password(password)
user.save()
#return user object if credentials are correct
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(request, user)
return redirect('polls:index')
return render(request, self.template_name, {'form': form})
コードのインデントを修正してください。 'LoginForm'とは何ですか? 'save()'メソッドは何をしますか?ログインフォームの場合、なぜパスワードを設定していますか? Djangoには、ログインビューを含む[認証ビュー](https://docs.djangoproject.com/en/1.10/topics/auth/default/#module-django.contrib.auth.views)が付属しています。なぜ自分で書くのではなく、それを使わないのですか? – Alasdair