zoukankan      html  css  js  c++  java
  • Python3.5 学习二十四

    本节课程大纲:

    -----------------------------------------------------------------------------------------------------------

      Model:

        -数据库操作

        -验证

      Form:

        class LoginForm():

          email = fields.EmailField()

        -is_valid ->每一个字段进行正则(字段内置正则)  +  clean_字段  -> clean(__all__) ->  _post_clean

        -cleand_data

        -error

    推荐使用,耦合低

    -----------------------------------------------------------------------------------------------------------

    一、ModelForm

       Model+Form结合体  --> 验证+数据库操作

      

      结合20181010的实例,看使用ModelForm带来的便利性

      obj.save()可将单表、多对多关联表数据一并保存

      但只会保存单表数据,而不保存多对多表记录,可以看源码分析其原理。

        想要加入M2M表记录,需要多执行以下一句代码:

        obj.save_m2m()

      

      Userinfo列表编辑保存,用ModelForm的实现源码中,注意点:

      1、修改界面的数据保存,需要引用instance

    Django2.0后,URL中需要引入re_path来生成一个带有正则的url对应

    页面上也可以自定义一些额外的字段,不需要保存到数据库的

     验证的clean钩子用法,和form之前讲的完全一样。

    对于ModelForm回顾:

    1、可以生成HTML标签,标签可以默认排列,可以逐个写入

      class Meta:。。。定制

    2、mf=xxxModelForm(instance=Modelobj) 写入默认值

    3、可以自定义加字段,不带入数据库,做验证用等

    4、各种验证 is_valid() ->每个字段正则、每个字段方法、clean、Postclean

    5、mf.save()   =>instace = mf.save(False)

            instace.save()

            mf.save_m2m()

    耦合度高,使用方便,但局限性高,小程序可以用,可能会大的程序就不要用了。

    二、Ajax

    Ajax全套  http://www.cnblogs.com/wupeiqi/articles/5703697.html

    Python开发目录  http://www.cnblogs.com/wupeiqi/articles/5433893.html

      原生  

      1、利用原生XmlHTTPResponse来发送POST请求时,都要设置请求头,一定要注意

      2、原生操作对象的兼容性设置

    function getXHR(){
    var xhr = null;
    if(XMLHttpRequest){
    xhr=new XMLHttpRequest();
    }
    else{
    xhr = new ActiveXObject("Microsoft.XMLHTTP");
    }
    return xhr;
    }

      jQuery

      伪Ajax操作:

      

    伪Ajax提交的数据获取:

      三种选择的时机:

        如果是普通数据(非文件),推荐使用顺序:jQuery,XMLHttpRequest,iframe

        

    三、文件上传(图片预览)

      -Form提交

      -Ajax上传

    {#          jquery上传文件时,需要设置以下两个参数#}
    processData:false,
    contentType:false,

      

      -iframe上传

    三种方式实现代码见程序20181010

    文件上传选择时机:iframe,jQuery(FormData),XMLHttpRequest(FormData)

    图片上传后的预览:上传后找到文件路径,然后加一个‘/’,作为可读取位置

    用Jquery动态生成载入一个img标签显示即可。

    如果不想单独点按钮上传,可以在文件input框的onchange事件中写上传方法。

    四、图片验证码  +  Session

     实现流程:

    Get请求:生成验证码、存放入Session

        创建一张图片给用户返回

    POST请求:提交数据,提交验证码,服务器将提交的数据和Session进行对比验证

    静态文件不需要写URL,因为Django是后台在帮助打开读取返回的操作。

    总结:

    --session

    -check_code.py(依赖:Pillow;字体文件)

    -刷新验证码:利用src属性后面加“?”

        

    五、富文本插件  CKEditor,UEEditor,TinyEditor,KinkEditor

      -基本使用

      参考笔记:http://www.cnblogs.com/wupeiqi/articles/6307554.html

      -文件上传、多文件上传、文件空间管理

      学习Kindle中各种文件上传

      --XSS攻击(过滤的函数)

    关于跨表操作的性能提升方式:

    1 Queryset.selectedrelated  直接跨表到关联表,读所有记录  

    2 Queryset.prefishrelated  两次跨表,第一次找__ID字段值,第二次跨表查 in __ID字段值的记录,放入内存,以提高效率

    作业:

    主站:

      http://127.0.0.1:8000  博客首页

      http://127.0.0.1:8000/xxx/1.html  某人的某篇文章

    个人博客:

      http://127.0.0.1/xxx/  某人的博客

      http://127.0.0.1/xxx/tag/python.html 某人的博客分类 

      http://127.0.0.1/xxx/catetory/mvc.html 某人的博客分类

      http://127.0.0.1/xxx/date/2011-11.html 某人的博客分类  

    个人后台管理:

      个人信息管理

      标签管理

      分类管理

      文章管理

        创建

        修改文章

        

  • 相关阅读:
    MVC中添加执行统计功能
    SVN 全局忽略列表
    WebApi当中微软又犯了一次2
    SQL性能更总
    【懒人专用】快速构建Web请求
    js中模拟多个字母的split
    分页起始位置的懒汉判断方法
    文档摆放
    转: 多线程环境下调用 HttpWebRequest 并发连接限制
    bash命令根据历史记录补全
  • 原文地址:https://www.cnblogs.com/HU-HU/p/9765526.html
Copyright © 2011-2022 走看看