如何在django中进行自定义登录 [英] How to make custom login in django

查看:123
本文介绍了如何在django中进行自定义登录的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我非常新的python django.i已经创建了一个注册页面,现在我想让login.i已经编写代码进行登录,但是当我想要获取由登录发布的数据是NOne。
我的代码是

  def login_success(request):

username = request.POST
password = request.POST.get('password')
打印loginview内
user = authenticate(username = username,password = password)
打印用户名是,用户名
如果用户不是无:
如果user.is_active:
登录(请求,用户)


#return render(request,'loginsuccess.html',{})
return HttpResponseRedirect('/ success /')

else:
state =你的帐户不活动

其他:
状态=用户名或密码不正确
打印用户名,用户名

返回呈现(请求,'登录。 html',{})

我正在使用用户名和密码中的NOne值



我的models.py

  class UserProfile(models.Model):

first_n ame = models.CharField(max_length = 50,blank = True,null = True)
last_name = models.CharField(max_length = 50,blank = True,null = True)
password = models.CharField max_length = 50)
email = models.EmailField()

def __unicode __(self):
return self.first_name或u''

我的登录模板

 <! DOCTYPE html> 
< html>
< head>
<! - 是否有人厌倦重复进入头部? - >
< title> Rango< / title>
< / head>

< body>
< h1>登录到Rango< / h1>

< form id =login_formmethod =postaction =/ loginsuccess />
{%csrf_token%}
用户名:< input type =textname =usernamevalue =size =50/>
< br />
密码:< input type =passwordname =passwordvalue =size =50/>
< br />

< input type =submitvalue =submit/>
< / form>

< / body>
< / html>


解决方案

更新1: / p>

首先,您创建的 UserProfile 不是正确的方式...默认情况下django具有 用户 modal



所以,请从你的models.py中删除UserProfile类,但是如果你想添加其他字段,然后使用ForeignKey如

  class UserProfile(models.Model):
user = models.ForeignKey(User)
phone_number = models.IntegerField()

答案



您的表单方法是 post 所以得到这样的视图中的帖子值

  def login_success (请求):
如果request.method =='POST':
#你的代码在这里
username = request.POST.get('username')
passwor d = request.POST.get('password')

这样写你的html

 < form id =login_formmethod =postaction => 
{%csrf_token%}
用户名:< input type =textname =usernamesize =50/>
< br />
密码:< input type =passwordname =passwordsize =50/>
< br />

< input type =submitvalue =submit/>
< / form>


i am very new in python django.i had create a register page now i want to make login.i have written code for login but when i want to get the data which is posted by login from is NOne. my code is

def login_success(request):

    username=request.POST.get('email')
    password=request.POST.get('password')
    print "inside loginview"
    user =authenticate(username=username, password=password)
    print "username is",username
    if user is not None:
        if user.is_active:
            login(request, user)


            # return render(request,'loginsuccess.html',{})
            return HttpResponseRedirect('/success/')

        else:
            state="your account is not active"

    else:
        state="username or password is incorrect"
    print "username",username

    return render(request,'login.html',{})

i am getting NOne values in username and password

my models.py

class UserProfile(models.Model):

    first_name=models.CharField(max_length=50,blank=True ,null=True)
    last_name=models.CharField(max_length=50,blank=True ,null=True)
    password=models.CharField(max_length=50)
    email=models.EmailField()

    def __unicode__(self):
        return self.first_name or u''

my login template

<!DOCTYPE html>
<html>
    <head>
        <!-- Is anyone getting tired of repeatedly entering the header over and over?? -->
        <title>Rango</title>
    </head>

    <body>
        <h1>Login to Rango</h1>

        <form id="login_form" method="post" action="/loginsuccess/">
            {% csrf_token %}
            Username: <input type="text" name="username" value="" size="50" />
            <br />
            Password: <input type="password" name="password" value="" size="50" />
            <br />

            <input type="submit" value="submit" />
        </form>

    </body>
</html>

解决方案

Update 1:

First of all UserProfile you created is not the correct way... by default django has the User modal

So please remove the UserProfile class from your models.py but if you wish to add additional field then extend with ForeignKey like

class UserProfile(models.Model):
    user = models.ForeignKey(User)
    phone_number = models.IntegerField()

Answer

Your form method is post so get the post values in views like this

def login_success(request):
    if request.method == 'POST':
        # do your code here
        username = request.POST.get('username')
        password = request.POST.get('password')

write your html like this

   <form id="login_form" method="post" action="">
        {% csrf_token %}
        Username: <input type="text" name="username" size="50" />
        <br />
        Password: <input type="password" name="password" size="50" />
        <br />

        <input type="submit" value="submit" />
    </form>

这篇关于如何在django中进行自定义登录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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