zoukankan      html  css  js  c++  java
  • 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函数和模板即可。

     

  • 相关阅读:
    python base64加密文本内容(1)
    python 翻译爬虫
    json为txt文本加密
    python json
    repr()函数
    linux 基本命令
    测试管理工具--禅道
    测试基础理论
    测试用例--场景法
    测试用例--测试大纲(提纲)法
  • 原文地址:https://www.cnblogs.com/lzhshn/p/13569309.html
Copyright © 2011-2022 走看看