day19-form表单&auth模块、项目初识

1.

form组件的主要功能如下:

  • 生成页面可用的HTML标签
  • 对用户提交的数据进行校验
  • 保留上次输入内容
    1. Django Admin的简单用法:
            1. 创建管理员账号
                python3 manage.py createsuperuser
            2. 在admin注册我们的表
                在app目录下面的admin.py里面按以下语法注册
                admin.site.register(models.类名)
            3. 其他配置项
                1. admin页面显示中文
                    settings.py中修改LANGUAGE_CODE = 'zh-hans'
                2. 表名显示中文
                    类下面写如下配置项
                        class Meta:
                            verbose_name = "出版社"
                            verbose_name_plural = verbose_name
                3. 字段显示中文
                    address = models.TextField(verbose_name="出版社地址")        
        2. form
            1. form的作用
                1. 生成HTML代码
                2. 帮我们做数据有效性的校验
                3. 保留上次输入内容,显示错误提示
        
            2. form组件生成html代码

            3. form组件校验数据有效性
                1. 内置的校验规则
                    1. require=True    该字段必填
                    2. max_length      该字段的最大长度
                    3. min_length      该字段的最小长度
                    
                2. 自定义校验规则
                    1. phone的格式 利用内置的正则校验器
                        from django.core.validators import RegexValidator
                        validators=[RegexValidator(r'^1[356789]\d{9}$', "手机号码格式不正确")],
                    2. 手机号的唯一性校验
                        手写一个校验函数
                    
                3. 使用钩子函数做校验
                    1. 局部钩子(hook)
                        在form类内部定义一个 clean_字段名() 方法
                        
                    2. 全局钩子
                        在form类内部定义一个 clean() 方法 
            4. form组合如何给html标签设置默认值
                1. 每一个字段设置默认值
                    initial="默认值"            
        3. model form
            1. 必须继承forms.ModelForm

            2. class Meta:
                model = "一对一关联的model类名"
                fields = "__all__"
            3. 实例化
                1. BookModelForm(instance=book_obj)
                2. BookModelForm(request.POST, instance=book_obj)
            4. form_obj.save()
View Code

 

1.form
1.django admin 用法
。。
先从url写起,views,html

form引入:1.对html内容优化 2.对用户提交的数据进行优化
作用:1.生成html代码2.帮我们做数据有效性校验
3.保留上次输入内容,显示错误提示

models中要加入__str__,用户展示中才显示中文
*打散

动态获取queryset

钩子函数---全局、局部钩子
密码、确认密码:

label.id_for_label?? 取到label标签的id值

autocomplete="off" 去掉历史自动填充
字段可以为空 required=False,

每一个字段设置默认值 initial="默认值"
form_obj = BookForm({"title": "书的默认值呀2", "publish_date": "2018-01-01"})

# 把ORM中一个对象 快速转换成 字典格式
from django.forms import model_to_dict
book_dict = model_to_dict(book_obj)
book_dict["publish_date"] = book_obj.publish_date.strftime("%Y-%m-%d")
print(book_dict)
form_obj = BookForm(book_dict)

增加、编辑

form缺点:与model中重复

model form:form写数据,最后到model中,让代码更简洁
model---url-----views----forms---html
model---url----views---modelform--html


2.auth模块
authen。。 login
login_required
配置一下login_url
auth模块实现登录后能跳转。。
create_user()

作业:创建用户、检查密码、修改密码、注销

扩展 auth_user表



3.项目初识
BBS
settings--model--url---form----views--html
登录
/static/...自己配置文件的名字
static/...自己直接引用,不用加/

随机生成图片--pillow模块
验证码的存入,存入内存中;get_value取值;
存放在session中,每个用户的验证码单独保存
点击一下,验证码刷新----利用src属性改变,加载

滑动验证码 -ok



注册----------下周
day19 20180-08-26

1.今日内容
    1. form和model form:https://www.cnblogs.com/liwenzhou/p/8747872.html
        1. Django Admin的简单用法:
            1. 创建管理员账号
                python3 manage.py createsuperuser
            2. 在admin注册我们的表
                在app目录下面的admin.py里面按以下语法注册
                admin.site.register(models.类名)
            3. 其他配置项
                1. admin页面显示中文
                    settings.py中修改LANGUAGE_CODE = 'zh-hans'
                2. 表名显示中文
                    类下面写如下配置项
                        class Meta:
                            verbose_name = "出版社"
                            verbose_name_plural = verbose_name
                3. 字段显示中文
                    address = models.TextField(verbose_name="出版社地址")        
        2. form
            1. form的作用
                1. 生成HTML代码
                2. 帮我们做数据有效性的校验
                3. 保留上次输入内容,显示错误提示
        
            2. form组件生成html代码

            3. form组件校验数据有效性
                1. 内置的校验规则
                    1. require=True    该字段必填
                    2. max_length      该字段的最大长度
                    3. min_length      该字段的最小长度
                    
                2. 自定义校验规则
                    1. phone的格式 利用内置的正则校验器
                        from django.core.validators import RegexValidator
                        validators=[RegexValidator(r'^1[356789]\d{9}$', "手机号码格式不正确")],
                    2. 手机号的唯一性校验
                        手写一个校验函数
                    
                3. 使用钩子函数做校验
                    1. 局部钩子(hook)
                        在form类内部定义一个 clean_字段名() 方法
                        
                    2. 全局钩子
                        在form类内部定义一个 clean() 方法 
            4. form组合如何给html标签设置默认值
                1. 每一个字段设置默认值
                    initial="默认值"            
        3. model form
            1. 必须继承forms.ModelForm

            2. class Meta:
                model = "一对一关联的model类名"
                fields = "__all__"
            3. 实例化
                1. BookModelForm(instance=book_obj)
                2. BookModelForm(request.POST, instance=book_obj)
            4. form_obj.save()
                
            
    2. auth模块+报障系统(BBS) :https://www.cnblogs.com/liwenzhou/p/9030211.html
        1. 设计一套用户认证系统
            1. 设计表
            2. 登陆
            3. 注册
            4. 个人中心那些
            5. 验证码
            6. 登陆认证
        2. auth模块的常用方法
            1. authenticate()
            2. login()
            3. create_user()
            4. create_superuser()
            5. logout()
            6. check_password()
            7. set_password()
        3. 扩展默认的auth_user表
           默认auth模块使用的是auth_user表,不满足实际需求
            1. 必须继承AbstractUser
            from django.contrib.auth.models import AbstractUser
            class UserInfo(AbstractUser):
                phone = models.CharField(max_length=11)
            2. 告诉Django使用我们的用户表代替auth_user表
                AUTH_USER_MODEL = "app名.UserInfo"
            再次注意:

            一旦我们指定了新的认证系统所使用的表,
            我们就需要重新在数据库中创建该表,而不能继续使用原来默认的auth_user表了。
            
            
            
        1. 登陆
            1. 验证码
                1. 自己生成验证码
                    1. pillow模块的使用
                        1. pip install pillow
                        2. 生成图片
                        3. 在图片上写字符
                        4. 在图片上画线
                    2. 内存操作
                        from io import BytesIO
                        f1 = BytesIO()
                    3. 验证码保存在哪里?
                        保存在session中,因为每个请求验证码都不同。
                    4. 点击验证码图片刷新  通过js修改src属性。
                        在login.html中绑定事件
                        $("#v-code-img").click(function () {
                            this.src += "?";
                        });
            2. 滑动验证码
                极验科技:https://docs.geetest.com/install/deploy/server/python
                
        
        2. 注册
            下周    
        
2. 今日任务
    1. 回去复习下装饰器
    2. 回去复习下时间模块(time、datetime)


3. 本周作业
    1. form组件和auth模块整理好博客
    2. admin自己研究研究    0828ok
    3. 把今天项目的登陆功能自己独立写一遍
    4. 个人中心页面
        修改的密码功能
    5. 报障系统设计表结果
        需求:
            普通的员工
            运维员工(超级用户)
            故障总结是一篇文章
            评论你的故障总结
            故障总结可以点 支持 和 反对
            故障总结 根据产品线 做分类
            故障总结 可以打标签
        
        作业是根据上面列出来的需求 设计表结构
        
    
    
    
课上笔记

 



posted @ 2018-08-28 21:52  yuyou123  阅读(186)  评论(0编辑  收藏  举报