• python web框架 Django基本操作


    django 操作总结!
    
    django框架安装:
      cmd安装: pip3 install django
      pycharm安装: 在python变量下 搜索 django 安装
    
    创建django项目:   cmd下创建django项目:     创建django程序:       django-admin startproject mysite     进入程序目录:       cd mysite
        启动socket服务端,等待用户发送请求 IP 端口       python manage.py runserver 127.0.0.1:8080
      pycharm下创建django项目:     直接新建一个django项目即可!   启动程序:直接运行django,启动之后会生成一个固定的IP和端口的url地址。 端口默认:8000;IP默认:127.0.0.1。浏览器直接访问这个网址,有提示证明创建成功。
    pycharm下django的操作:
      一、配置文件: - 在项目下:   - 创建静态文件 static 用于存放 CSS,JS,图片等文件   - 创建视图函数文件 用于编写视图函数   - 创建sql数据库连接文件 通过类创建连接数据库的操作,减少代码复用。 - settings中添加或是查看路径是否正确:   - 模版路径:检查TEMPLATES 下的 "DIRS":[os.path.join(BASE_DIR,'templates')],   - 静态文件路径:STATICFILES_DIRS = (os.path.join(BASE_DIR,'static'),)   - 隐藏MIDDLEWARE 路径中 'django.middleware.csrf.CsrfViewMiddleware' 信息   二、路由系统: 路由关系: url ---> 函数   在urls.py 文件中导入视图函数文件,写上路由关系!     示例:   from app01 import views   url(r'^login/', views.login),   django中的路由系统和其他语言的框架有所不同,在django中每一个请求的url都要有一条路由映射,这样才能将请求交给对一个的view中的函数去处理。      其他大部分的Web框架则是对一类的url请求做一条路由映射,从而是路由系统变得简洁。   三、视图函数:     确定好相对应的路由关系之后,就需要编写路由函数。所有的信息都是从数据库中获取,此时就需要在函数中建立与数据库的链接,获取数据!pymysql操作,略过!       注意点:     - 定义函数的时候,必须设置形参 request 接收浏览器的请求!     - 判断请求方式:request.method     - 获取不通方式提交的数据:   (GET方式,POST方式) --->
                  GET方式提交的信息在请求头url中,在页面网址上就能看到!
                  POST方式提交的信息在请求体中。不能直接查看到!
                request.GET.get()  获取get方式提交的一个值
    		  request.POST.get() 获取post方式提交的一个值
    		  request.POST.getlist() 获取post方式提交的数组信息(多值)
        - 返回信息:(三种方式)   return HttpResponse('字符串') 直接返回字符串   return redirect('URL') 跳转到某个url页面下   return render(request,'模板路径(.html文件)') 跳转到某个模版页面   return render(request,'模板路径',{值}) 跳转到某个模版页面 同时给这个页面返回值   render实质:1. 获取模板+数据,后台渲染;2. HttpReponse(...)把渲染之后的字符串信息返回给页面   
                补充:模板渲染是在后台执行,完毕之后再把字符串返回给模版,通过浏览器的渲染显示! 值类型:传值必须是字典形式!可以传多个值!key为字符串,value可以为单值,列表,字典! { 'k1': 'v1', 单值类型 'k2': [1,2,32,34],列表类型 'k3': {'x1':'v2'...}, 字典类型 }   四、模版:     模版渲染:       对于函数传递回来的值,模版都是通过值的key去获取!!!这个一定要注意!       模版语言:     (注意:对于列表或是字典,获取其中的元素是用.的方式!!!     前端没有索引这个概念 用于去取值,但前端支持点的方法去获取。     例如一个字典 dic = {"k1":v1} ====> dic.k1获取值 v1) 获取单值:{{k1}} 获取列表中的某个值:{{k2.索引值}} 获取所有单值:循环方式:   {% for item in k3 %} {{item.k1}}   ……   {% endfor %} 若是有条件判断:{% if 条件 %} 语句 {% else %} 语句 {% endif %}   模版操作方式: 1、新url方式:点击跳转到另一个url页面   - 注意:要跳转到新urls路径 必须以这种方式写 -----> "/urls路径/" 。否则后台无法识别地址会报错!       不管是form表单或是a标签!注意跳转或是提交信息的urls路径的书写方式! 2、模态框操作:点击触发事件,出现弹框!   - 前端js的应用 注意点:   http连接,建立在TCP连接之上! http 协议具有:无状态,短连接的特性!   模版引擎的渲染,是在服务端进行的   wsgi 是一个协议,提供通信接口,实质就是socket   重定向 是浏览器完成的操作!   五、ajax html中,有点击跳转,页面刷新功能的标签是:a标签,或是form表单!如果不想让页面自动刷新而是人为控制,此时就需要用到ajax.   阻止事件发生的操作:     1、标签里写事件类型,函数前写return,函数中也写return false;   - <a onclick='return func();'></a>     func(){ …… return false } 2、通过jQuery对象的方式,给标签绑定某个事件,直接在事件触发函数中写return false   - <a id="a"></a>     $("#a).click(function(){ ……       return false })
          ajax是jQuery的一个方法,使用前需要先导入jQuery文件!     注意:页面数据不管提交或是接收,都必须是字符串类型。    data传值的类型:字符串,或是数组,没有字典格式!若想传递先利用JSON转换成字符串! 页面的JSON语法:     JSON.stringify(对象) ----> 字符串     JSON.parse("字符串") ----> 对象 ajax语法: $.ajax({ url: '要提交的地址', type: 'POST', // GET或POST,提交方式 data: {'k1': 'v1','k2':'v2'}, // 提交的数据 dataType:"JSON", //设置接收的数据类型 traditional: true,// 如果提交的数据的值有列表,则需要添加此属性 success:function(data){ // 成功之后,执行回调函数 location.href = "要跳转的地址" location.reload() //页面重新加载 // 当前服务端处理完毕后,自动执行的回调函数 // data返回的数据   }     }) 为配合ajax的使用,视图函数也做了一定的修改,有了一个存放状态的字典,有了错误检测!返回的结果也必须是字符串类型的信息!   视图函数代码举例:     def change_class(request):   ret = {"status":True,"message":None}   try:     cid = request.POST.get("cid")     cname = request.POST.get("cname")     sql = "update class set cname = %s where cid = %s"     sqlmodus.put(sql,[cname,cid,])
                except Exception as e: ret["status"] = False ret["message"] = "处理异常"   return HttpResponse(json.dumps((ret))) //利用JSON把对象转成字符串返回模版
      模态与新urls 应用场景分析:
    模态对话框(Ajax)用于:   - 少量输入框   - 数据少   示例:登录
    新URL方式   - 操作多   - 对于大量的数据以及操作   具体怎么应用还是需要视具体情况及要求操作!没有绝对只说!
      Http请求生命周期: 请求头 -> 提取URL -> 路由关系匹配 -> 函数 (模板+数据渲染) -> 返回用户(响应头+响应体)   六:母板操作: Django母版:   母版: 存放所有页面公用   子板: 继承母版 - 自定义当前页面私有的东西   按照正常操作生成一个母板页面,   在head标签中写上两个block块作为标志位,用于导入CSS和JS文件   在body标签下写一个block块作为标志位,用于导入不同的代码   母版: <html>         <head>   {% block css %} {%endblock%} ...   {% block js %} {%endblock%}     </head>     <body>   {% block table %} {%endblock%}     </body> </html>   子板: {% extends "layout.html "%} 引入母板 {% block css %} CSS文件路径或是代码 {%endblock%} {% block js %} JS文件路径或是代码 {%endblock%} {% block table %} 文本内容 {%endblock%}   七、响应式布局:(CSS布置)借用两大框架:BootStrap和fontawesome 1. BootStrap响应式布局: @media() 2. 栅格 (把整个页面分成12份,不同的类名,对应着不同的类型,具体看文档) 3. 表格 4. 导航条 5. 路径导航 6. fontawesome 图标 7. 布局position:absolute 对页面区域的划分及占比 fixed 是针对窗口做的定位;absolute是绝对定位,relative 相对定位是给absolute定位做的标杆! 8. :hover方法,以前只知道一个用法:鼠标移动到某个标签上时,执行的操作。   现再补充以下: 当鼠标移动到xx样式的父标签上时,其下子标签.g应用以下属性 .xx:hover .g{   CSS样式      }   八、cookies a. 保存在浏览器端“键值对” b. 服务端可以向用户浏览器端回写cookie c. 客户端每次发送请求时,会携带cookie去匹配   - 发送Http请求时,在 请求头 中携带当前所有可访问的cookie   - 返回时,存在于 响应头   - 可以设置cookies的超时时间(生命周期) 对象 obj的三种样式:   obj = HttpReponse(..)   obj = render(...)   obj = redirect(..) cookies的设置和获取:   - 明文格式: 设置cookies 明文格式!   obj.set_cookie( key, //键 value='', //值 max_age=None, //超时时间 expires=None, //具体的超时日期 path='/', //为某个url设置cookies,仅在该路径下生效 / 代指所有路径 domain=None, // 域名 访问某个域名网站,设置cookies   (一级域名绑定其下域名也可以拿到,若是二级域名极其以下设置cookies,则其他的域名拿不到!) //安全相关! secure=False, // Https协议 httponly=False //只有通过http协议来回发送请求才用! 只能在Http请求中传输,js代码无法获取到   ) 读取:request.COOKIES.get("键名")   - 密文格式:设置加密的cookies cookie签名: obj.set_signed_cookie('ticket',"123123",salt='加密字符串') 获取签名的cookies request.get_signed_cookie("key名",salt="加密方式")   注意:一般设置cookies,常用的参数有:key,value,max_age,path,salt(密文才有,其他都有!)

     

  • 相关阅读:
    MySQL数据库高可用集群搭建-PXC集群部署
    高性能高并发网站架构,教你搭建Redis5缓存集群
    redis连接错误3种解决方案System Error MISCONF Redis is configured to save RDB snapshots
    进程异常行为-反弹Shell攻击,KILL多个进程
    Laravel中我们登录服务器通过 Tinker 手动创建后台管理用户
    Laravel5.x的php artisan migrate数据库迁移创建操作报错SQLSTATE[42000]解决
    Laravel:php artisan key:generate三种报错解决方案,修改默认PHP版本(宝塔面板)
    大型网站如何防止崩溃,解决高并发带来的问题
    PHP微信公众平台OAuth2.0网页授权,获取用户信息代码类封装demo(二)
    iOS开发 ReactiveCocoa入门教程 第二部分
  • 原文地址:https://www.cnblogs.com/zh605929205/p/7041554.html
Copyright © 2020-2023  润新知