0

등록 양식이 있는데 등록 양식이 올바르게 채워지고 유효하면 자동으로 사용자를 로그인하고 싶습니다. 로그인보기는 URLDjango - 한 화면에서 다른보기로 "POST"정보를 보내는 방법

/login/ 

이가 로그인하는 URL이 (가 일반 로그인보기이다)에 연결되어 볼 수 있습니다 : 지금

def login(request, template_name='registration/login.html', 
     redirect_field_name=REDIRECT_FIELD_NAME, 
     authentication_form=AuthenticationForm, 
     current_app=None, extra_context=None): 

    if request.method == "POST": 
     form = authentication_form(data=request.POST) 
     if form.is_valid(): 

      # Ensure the user-originating redirection url is safe. 
      if not is_safe_url(url=redirect_to, host=request.get_host()): 
       redirect_to = resolve_url(settings.LOGIN_REDIRECT_URL) 

      # Okay, security check complete. Log the user in. 
      auth_login(request, form.get_user()) 

      if request.session.test_cookie_worked(): 
       request.session.delete_test_cookie() 

      return HttpResponseRedirect(redirect_to) 

else: 
    form = authentication_form(request) 

request.session.set_test_cookie() 

current_site = get_current_site(request) 

context = { 
    'form': form, 
    redirect_field_name: redirect_to, 
    'site': current_site, 
    'site_name': current_site.name, 
} 
if extra_context is not None: 
    context.update(extra_context) 
return TemplateResponse(request, template_name, context, 
         current_app=current_app) 

, 등록을 처리하는보기는 다음과 같습니다

def registrationView(request): 
    if request.method == 'POST': 
    form = RegistrationForm(request.POST) 

    if form.is_valid(): 
     user = User.objects.create_user(
     username=form.clean_data['username'], 
     password=form.clean_data['password1'], 
     email=form.clean_data['email'] 
     ) 
     return HttpResponseRedirect('/login/') 
내가

등록보기
/login/ 

로 리디렉션 날 때 "POST"정보로 사용자 이름과 암호를 전송하는

이제, 그 수는 로그인보기

if request.method == "POST": 
에게 도달 할 때 너무

이 true로 평가됩니까?

+0

왜 당신이 그 일을 할 것 한 번 봐? – geekazoid

+0

@geekazoid 로그인을 사용하여 사용자를 로그인하려는 경우. – user2719875

답변

2

그런 마법을 시도하는 대신 현재 사용자를 세션으로 설정해야한다고 생각합니다.

def registrationView(request): 
    if request.method == 'POST': 
    form = RegistrationForm(request.POST) 

    if form.is_valid(): 
     user = User.objects.create_user(
     username=form.cleaned_data['username'], 
     password=form.cleaned_data['password1'], 
     email=form.cleaned_data['email'] 
     ) 
     login(request, user) 

     return HttpResponseRedirect('...') 

https://docs.djangoproject.com/en/1.5/topics/auth/default/#django.contrib.auth.login

+0

흠, 의미가 있습니다. 귀하의 코드를 사용하면 " 'RegistrationForm'개체에 'clean_data'속성이없고 registrationView의"username = form.clean_data [ 'username'] "줄로 다시 돌아갑니다. ? – user2719875

+2

[cleaned_data] (https://docs.djangoproject.com/en/1.6/ref/forms/api/#django.forms.Form.cleaned_data) – sk1p

+0

@ sk1p 예, 감사합니다. 문제가 해결되었습니다. – user2719875