이것은 초심자 질문입니다. 나는 사용자 이름과 암호를 가진 사용자를 저장하기위한 테이블을 가진 mysql 데이터베이스를 가지고있다. 난 django가 'SyncDb'를 처음 실행할 때 설치하는 인증 백엔드와 테이블을 사용하고 싶지 않습니다. 그래서 내 질문은 : 내가 어떻게 정의 된 데이터베이스에서 활성 사용자를 찾는 대신 django 내가 만든 데이터베이스를 사용하도록 지시합니까. 이 코드를 사용하고 있지만 물론 'auth_user'테이블에 언급 된 사용자를 찾고 있습니다.사용자 정의 인증 방법 또는 동일하게하는 다른 방법? 장고
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()
그래서 내 초심자 질문입니다. 고마워요
추신 : 내 form_invalid()가 작동하지 않습니다 ... (오류 : 1 대신 2 개의 매개 변수 전달) 제안 사항을 알려주십시오.
1) 확인 : 다시 말하지만, 당신에게 우리는 우리의 프로젝트를 위해이 문제를 알아 내려고했고, 초기 혼란은 기본적으로이 일어날 수 있도록 장고에 두 가지 문제를 처리 할 필요가 있다는 사실에서 비롯
왜 django의 인증 모델을 사용하지 않으시겠습니까? 당신이 요구하는 것은 특히 당신이 새라고 말한 것처럼 사소한 것이 아닙니다. 장고가 제공하지 않는 사용자 정의 필드를 저장하고 있기 때문입니까? 또는 사용자 이름이 아닌 로그인으로 이메일 주소를 사용 하시겠습니까? 이 모든 것은 인증 프레임 워크 내에서 쉽게 처리 될 수 있습니다. –
어떤 점에서는 사용자 이름이 아닌 이메일 주소를 사용하고 싶습니다. 나는 이것에 관해 새로운 것을 언급했다. 그래서 나는 당신이 당신이 제안하고있는 것에 맞을 것이라고 확신한다. 나는 기본적인 것들로 별표를 만들고 싶다. 그래서 로그인을 수정하여 무엇이 가장 좋은 것인지 알아볼 수있다. 내가 회사 서버와 그 이상으로 애플리케이션을 옮길 때, 나는 장고 데이터베이스가 아닌 적절한 데이터베이스에 데이터를 저장하고 싶다. 어쩌면이 문제를 잘못하면 알려주세요. 고마워요 – user3799942
기본으로 시작하려면 장고가 제공하는 모든 것을 붙잡아서 프레임 워크를 배울 수 있습니다. 한번 핸들을 잡으면 커스터마이징을 이해할 수 있습니다. 또한, 당신이 의미하는 것을 설명해야합니다 _ "적절한 데이터베이스에 데이터를 저장하고 장고에 저장하지 마십시오"_. –