在Django中登录一个已经注册的用户 [英] Logging in an already-registered user in Django

查看:128
本文介绍了在Django中登录一个已经注册的用户的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经完成登录系统的注册部分,但我无法注册用户登录。



Views.py

$ b $这是我的代码:

Views.py



  from django.shortcuts import render,重定向
from django.contrib.auth import authenticate,login $ b $ from django.views.generic import从.forms导入UserForm

#查看

$ b $成功(请求):
#return render(request,'success.html')

class UserFormView(View):
form_class = UserForm
template_name ='form.html'

def get(self,request):
form = self.form_class(None)
return render(request,self.template_name,{'form':form})

def post(self,request):
form = self.form_class(request.POST)
$ b $如果form.is_valid():
user = form.save(commit = False)
#已清理数据
username = form.cleaned_data ['username']
password = form.cleaned_data ['password']
user.save()
return redirect('success.html')

return render(request,self.template_name,{'form':form})



Urls.py



  from django.conf导入设置从django.conf.urls导入设置
导入包含,url $ b $从django.conf.urls.static导入静态
从django.contrib导入admin


from .views import UserFormView


urlpatterns = [
url(r'^ $',UserFormView.as_view(),name ='registraion'),
url(r'login /',LoginView.as_view(),name ='login'),
#url(r'success /',Success,name ='sccuess')
]



Forms.html



 注册表格
< br>
< form action =method =POST>
{%csrf_token%}
{{form.as_p}}
< button type =submit> SUBMIT< / button>
< / form>

我基本上想要的是一个登录页面,我可以在其中登录一个已经注册的用户登录页面与用户注册的页面不同)。所以基本上是一个注册用户可以登录的新视图。



我已经创建了注册页面,代码已经在上面了。在用户在登录页面进行身份验证后,他必须重定向到另一个页面(比如home.html),他的登录信息也必须发送到他被重定向到的页面。


<您需要使用 authenticate() login()

解决方案 $ c>创建用户后。



此外,使用 HttpResponseRedirect 将用户重定向到目标网页,我认为您不需要创建一个success.html。

$ $ p $ if form.is_valid():
user = form.save(commit =假)
#已清理的数据
用户名= form.cleaned_data ['username']
password = form.cleaned_data ['password']
user.save()
auth_user = authenticate(username = username,password = password)
login(self.request,auth_user)
#redirect for
return HttpResponseRedirect('your_landing_url')

return render(request,self.template_name,{'form':form})


I have made the registration part of the login system, but I am unable to make a registered user login. How can I do this?

Here's my code:

Views.py

from django.shortcuts import render, redirect
from django.contrib.auth import authenticate, login
from django.views.generic import View


from .forms import UserForm

# def Success(request):
#     return render(request, 'success.html')

class UserFormView(View):
    form_class = UserForm
    template_name = 'form.html'

    def get(self, request):
        form = self.form_class(None)
        return render(request, self.template_name, {'form': form})

    def post(self, request):
        form = self.form_class(request.POST)

        if form.is_valid():
            user = form.save(commit=False)
            # cleaned data
            username = form.cleaned_data['username']
            password = form.cleaned_data['password']
            user.save()
            return redirect('success.html')

        return render(request, self.template_name, {'form': form})

Urls.py

from django.conf import settings
from django.conf.urls import include, url
from django.conf.urls.static import static
from django.contrib import admin


from .views import UserFormView


urlpatterns = [
    url(r'^$', UserFormView.as_view(), name='registraion'),
    url(r'login/', LoginView.as_view(), name='login'),
    #url(r'success/', Success, name='sccuess')
]

Forms.html

 Registration Form
<br>
<form action="" method="POST">
{% csrf_token %}
{{form.as_p}}
<button type="submit">SUBMIT</button>
</form>

What I basically want is a login page from which I can login in an already-registered user (this login page is different from the page where the user registers). So basically a new view through which a registered user can log in.

I have already made the registration page and the code for it is above. Also after the user is authenticated on the login page he must be redirected to another page (say home.html) and his login information must also we carried to the page where he has been redirected to.

解决方案

You need to use authenticate() and login() after create your user.

Also, use HttpResponseRedirect to redirect user to your landing page, I think, you don't need to create a "success.html".

        if form.is_valid():
            user = form.save(commit=False)
            # cleaned data
            username = form.cleaned_data['username']
            password = form.cleaned_data['password']
            user.save()
            auth_user = authenticate(username=username, password=password)
            login(self.request, auth_user)
            # redirect works for 
            return  HttpResponseRedirect('your_landing_url')

        return render(request, self.template_name, {'form': form})   

这篇关于在Django中登录一个已经注册的用户的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆