django - meeting project说明之login页面

我看了一个晚上,才看明白login这个页面的逻辑。
我真是笨!

  • views.py
class LoginForm(Form):
    name = fields.CharField(
        required=True,
        error_messages={
    
    'required': '用户名不能为空'},
        widget=widgets.TextInput(attrs={
    
    'class': 'form-control', 'placeholder': '用户名', 'id': 'name'})
    )
    password = fields.CharField(
        required=True,
        error_messages={
    
    'required': '密码不能为空'},
        widget=widgets.PasswordInput(attrs={
    
    'class': 'form-control', 'placeholder': '密码', 'id': 'password'})
    )
    rmb = fields.BooleanField(required=False, widget=widgets.CheckboxInput(attrs={
    
    'value': 1}))



def login(request):
    """
    用户登录
    """
    if request.method == "GET":
        form = LoginForm()
        return render(request, 'login.html', {
    
    'form': form})
    else:
        form = LoginForm(request.POST)
        if form.is_valid():
            rmb = form.cleaned_data.pop('rmb')
            #form.cleaned_data['password'] = md5(form.cleaned_data['password'])
            #user = models.UserInfo.objects.filter(**{'name': '张凯程', 'password': 'zhangkaicheng'}).first()
            user = models.UserInfo.objects.filter(**form.cleaned_data).first()
            if user:
                request.session['user_info'] = {
    
    'id': user.id, 'name': user.name}
                if rmb:
                    request.session.set_expiry(60 * 60 * 24)
                return redirect('/index/')
                #return render(request, 'cleaned_data.html', {'form': form, 'user':user,'session':request.POST}) # 查看cleaned_data信息
            else:
                form.add_error('password', '密码错误')
                return render(request, 'login.html', {
    
    'form': form})
        else:
            return render(request, 'login.html', {
    
    'form': form})

  • models.py
class UserInfo(models.Model):
    name = models.CharField(verbose_name='用户姓名', max_length=32)
    password = models.CharField(verbose_name='密码', max_length=32)

    def __str__(self):
        return self.name
  • login.html
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="{% static 'plugins/bootstrap/css/bootstrap.min.css' %}">
</head>
<body>

<div style="width: 500px;margin: 50px auto;">
    <form class="form-horizontal" method="post" novalidate>
        {% csrf_token %}
        <div class="form-group">
            <label for="name" class="col-sm-2 control-label">用户名:</label>
            <div class="col-sm-10">
                {
   
   { form.name }}
                {
   
   { form.errors.name.0 }}
            </div>
        </div>
        <div class="form-group">
            <label for="password" class="col-sm-2 control-label">密码:</label>
            <div class="col-sm-10">
                {
   
   { form.password }}
                {
   
   { form.errors.password.0 }}
            </div>
        </div>
        <div class="form-group">
            <div class="col-sm-offset-2 col-sm-10">
                <div class="checkbox">
                    <label>
                       {
   
   { form.rmb }} 一天免登录
                    </label>
                </div>
            </div>
        </div-->
        <div class="form-group">
            <div class="col-sm-offset-2 col-sm-10">
                <button type="submit" class="btn btn-primary">登录</button>
            </div>
        </div>
    </form>
</div>
</body>
</html>

猜你喜欢

转载自blog.csdn.net/m0_46629123/article/details/114295548
今日推荐