這是一個begginers問題。我有一個MySQL數據庫,用表格來存儲用戶名和密碼,這很簡單。我不想使用第一次運行'SyncDb'時django安裝的身份驗證後端和表。所以我的問題是:我如何告訴django使用我創建的數據庫,而不是在預定義的數據庫中查找活動用戶。 我使用這段代碼,但當然這是在已經提到的'auth_user'表中尋找用戶。自定義身份驗證方法或者其他一些方法可以做同樣的事情? Django
class LoginView(FormView):
form_class = LoginForm
redirect_field_name = REDIRECT_FIELD_NAME
template_name = 'login.html'
success_url = 'index'
def form_valid(self, form):
username = form.cleaned_data['username']
password = form.cleaned_data['password']
user = authenticate(username=username,
password=password)
if user is not None:
if user.is_active:
login(self.request, user)
return HttpResponseRedirect(self.get_success_url())
else:
return self.form_invalid(form)
def form_invalid(self):
return HttpResponseRedirect(reverse('app_name:login'))
def get_success_url(self):
if self.success_url:
redirect_to = self.success_url
else:
redirect_to = self.request.REQUEST.get(self.redirect_field_name, '')
netloc = urlparse.urlparse(redirect_to)[1]
if not redirect_to:
redirect_to = settings.LOGIN_REDIRECT_URL
elif netloc and netloc != self.request.get_host():
redirect_to = settings.LOGIN_REDIRECT_URL
return redirect_to
def post(self, request, *args, **kwargs):
form_class = self.get_form_class()
form = self.get_form(form_class)
if form.is_valid():
return self.form_valid(form)
else:
return self.form_invalid()
所以這是我的問題。非常感謝你
PS:我的form_invalid()不工作...(錯誤:傳遞2參數而不是1)任何建議請告訴我。再次,非常感謝你
爲什麼你不想使用django的身份驗證模型?你所要求的並不是微不足道的,特別是當你說自己你是新的。是否因爲你正在存儲一些django沒有提供的自定義字段?或者你想使用電子郵件地址作爲登錄名而不是用戶名?所有這些都可以在認證框架內輕鬆處理。 –
在某些時候,我想使用電子郵件地址而不是用戶名。正如我所提到的那樣,新的這一點,所以我相信你對你的建議是正確的。我想與基本的東西明星,然後我可以修改登錄看看什麼是最好的方法。當我將應用程序移動到公司服務器等時,我想將數據存儲在適當的數據庫中,而不是在django中。也許我在這個問題上錯了,請讓我知道。謝謝 – user3799942
如果你想從基礎開始,然後堅持任何django提供的,所以你可以學習框架;一旦你掌握了這一點 - 你就可以找出自定義。此外,你應該解釋你的意思_「將數據存儲在適當的數據庫中,而不是在Django的數據庫中」_。 –