• 127-django的注册和登录【1】:尝试使用预设的User类


    关于注册和登录的功能,这几天弄得我有点头大,看了无数的教程,越看越糊涂,还是认真去看最原始的官方教程,终于有所了解。

    现在已经是凌晨0点30分了,但是小有成就,依然很兴奋,于是写下这篇日志。

    对新人而言,还是避免重复造轮子。我们应该充分利用django已经为我们预设的各种东西,比如注册和登录这类和用户有关的。django最让人称赞的是它默认集成了一个后台,通过:python3 manage.py createsuperuser,即可创建一个后台超级管理员帐号,然后使用后台功能。

    可以发现,后台里默认有2个已经存在的类:group,user,通过新建user,即可创建新的后台管理员。而之前创建的那个超级管理员,此时已经在user列表里了。并且它的is_staff=True

    要在前端实现注册和登录,就应该多使用django已经存在的东西。下面来尝试一下:

    【1】我们已经决定使用django预设的user类,因此models部分就不用写了,直接从表单入手,即:要做一个怎样的表单界面,才能满足注册和登录。

      

    from django import forms
    from django.contrib.auth.models import User
    
    
    # 仅作测试用,非正常情况
    class UserLoginForm(forms.ModelForm):
        class Meta:
            model = User
            fields = ['username', 'password', 'email']
            labels = {'username': '用户', 'password': '密码', 'email': '邮箱'}
    

      

    这里的user不是我们自己写的类,而是直接引用系统的,然后告诉这个表单类,你要去呈现的类就是这个系统预设的user:model = User;

    接着,如果使用django 2.0以上的,可以看这个地址,看一下user到底有多少字段和属性:https://docs.djangoproject.com/en/3.0/ref/contrib/auth/#django.contrib.auth.models.User

    【2】在官方教程里,有个LoginView,可以让你连视图都不用写,直接写模板即可,这个我认为没必要!过了!

    在views写一个简单的函数,先引用表单类,然后作为上下文传入:

      

    from django.shortcuts import render
    from .forms import UserLoginForm
    # 可以发现,这里都不需要引入user类,只需要引入那个表单类即可
    
    
    def login(request):
        form = UserLoginForm
        context = {'form': form}
        return render(request, 'login.html', context)
    

      

    【3】django有后台页面,自然有对应的模板,不过django“藏起来“了,不好找!这里完全可以直接写一个,因为模板是最简单的:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>login</title>
    </head>
    <body>
        <form>
            {% csrf_token %}
            {{form.as_p}}
            <input type="submit" value="login" />
        </form>
    </body>
    </html>
    

     

    以上是借用django预设模型(或类)的基本思路,如果你打算用某个预设的模型,你只关注views函数和模板即可。

     

  • 相关阅读:
    OPCUA+MQTT构建物联网通用框架
    上位机开发之单片机通信实践(一)
    上位机开发之三菱Q系列PLC通信实践
    H5中你意想不到的美好
    ModbusRtu通信报文详解【二】
    ModbusRtu通信报文详解【一】
    基于C#实现与JY61姿态角度传感器通信
    以数字资产模型为核心驱动的一站式IoT数据分析实践
    基于华为云IoT Studio自助生成10万行代码的奥秘
    一条物联网设备控制命令的一生
  • 原文地址:https://www.cnblogs.com/lzhshn/p/13569309.html
Copyright © 2020-2023  润新知