0
我在區分Django中的登錄和註冊時遇到了問題。我能夠成功創建一個註冊表單(註冊時也會記錄用戶的註冊表單)。我正在努力做出單獨的註冊表單。用戶登錄,身份驗證以及在Django中註冊1.10
以下代碼成功呈現一個帶有「用戶名」和「密碼」字段的表單。點擊「提交」後,信息將作爲用戶對象進行存儲,然後進行標準化,然後保存到數據庫,然後用於登錄用戶。
我試圖刪除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