zoukankan      html  css  js  c++  java
  • Django

    Django

    web应用

    本质是基于socket实现的应用程序

    http协议: 应用层协议

      1 基于TCP协议

      2 基于请求响应

      3 短连接

      4 无状态保存

    请求协议

    请求首行  GET  path?get数据  HTTP/1.1
    
    请求头
    
    userAgent:  win  Chorome/iPhone
    
    contentType:  json  application/x-www-form-urlencoded
    
    
    请求体  (post才有请求体)
    
    a=1$b=2
    
    {"a":1,"b":2}

    响应协议

    响应首行    HTTP/1.1    200    OK
    响应头
    contentType:"json"
    ...
    空行
    响应体
    
    响应状态码:
                1 开头: 请求中
                200: 请求成功
                3 开头: 重定向
                4 开头: 文件路径找不到
                5 开头: 服务器错误

    如何给服务器发送json数据

    1 地址栏 get请求
    2 form表单 get/post请求 (无法发送json数据)
    3 a标签连接请求 get请求
    4 Ajax请求 get(查) post(提交数据添加记录) put(更新) delete(删除)
    发送请求方式
    $.ajax({
        url:"/index/",
        type:"post",
        contentType:"json"
        data:JSON.stringfy({
            a:1,
            b:2
    }),
    success:function(res){
    }
    })
    
    // 注意: Django解析不了json数据,只能自己利用request.body解析
    Ajax发送json数据

    MTV+url路由分发:

    M:  model.py

    T:  Template:存放模板文件

    V:  视图 逻辑

    url路由分发:

    反向解析:

                    url(r'^role/add/$', views.role, name='role_add'),
                    url(r'^role/edit/(d+)/$', views.role, name='role_edit'),

    视图:

                    path=reverse("role_add")  # "role/add/"
                    path=reverse("role_edit",args=(1,2))  # "role/edit/1/"

    模板:

                     {% url 'role_add' %}
                     {% url 'role_edit' 2 %}

    名称空间:

    re_path(r'^app01/', include(("app01.urls","app01"),namespace="app01",)),

    视图函数:

    request对象:  储存这次请求所有请求信息:

    Httprequest.get
    Httprequest.POST
                    ----- urlencoded编码
                    ----- 注意: 键值对是多个的时候,比如说checkbox类型的input标签,select标签需要用:request.POST.getlist("hobby")
    HttpRequest.body 一个字节串,代表请求报文的主体.
    HttpRequest.path
    HttpRequest.method
    HttpRequest.META 请求头
    HttpRequest.FILES
    HttpRequest.COOKIES
    HttpRequest.session session中间件
    HttpRequest.user 认证中间件
    属性
    HttpRequest.get_full_path()
    HttpRequest.is_ajax()
    方法
     obj=HttpResponse("hello")
     obj=render(request,"index.html")
     obj=redircet("/index/")
    对象

     模板层

    含有模板语法的html文件称为模板文件,由render方法渲染引擎

    {{}}: 渲染变量
            ---- 深度查询 句点符 注意: 无参方法无需加括号.
            ---- 过滤器 date,safe,add,slice,
    
    {%%}: 渲染标签
            {% for i in [11,22,33] %}
                    {% if i != 22 %}
                            <p>i</p>
                    {% endif %}
                    {% endfor %}
    模板语法

    自定义标签和过滤器

    1, 在 settings 中的 INSTALLED_APPS 配置当前 app, 不然django无法找到自定义的simple_tag.    
    2, 在 app 中创建templatetags模块(模块名只能是templatetags)
    3, 创建任意 .py 文件,如: my_tags.py
                fromm django import template
                register = template.Library() # register的名字是固定的,不可改变
                
                @register.filter
                def filter_multi(v1,v2):
                    return v1 * v2
                
                @register.simple_teg
                def simple_tag_multi(v1,v2):
                    return v1 * v2
    
    4, 模板中使用:
                {% load my_tags %}
                # num=12
                {{ num|filter_multi:2 }} #24
                {{ num|filter_multi:"[22,33,4444]"}}
    
    
    继承 extend:
                创建base.html:
                    创建钩子
        {%block css%}
            
        {%endblock css%}
        
        {%block content%}
            <p>123</p>
        {%endblock%}
        
        {%block js%}
            
            {%endblock js%}
    
            子模板继承:
            {% extends 'base.html' %}
            
            {% block content %}
                    <p>111</p>
            {% endblock %}

    ORM

    class Book(models.Model):
            title = models.CharFiled(max_length=32)

     

    单表操作:

    model的元类信息:
    Book._meta.verbose_name
    '书籍'
    Book
    <class 'app01.models.Book'>
    Book._meta
  • 相关阅读:
    关于使用CodeFirst,修改类或上下文时操作数据库报错解决方法
    解决:启用多线程调用webBrowsers函数报错:指定的转换无效
    强制IE浏览器或WebBrowser控件使用指定版本显示网页
    EF:分页查询 + 条件查询 + 排序
    (.NET高级课程笔记)委托、事件总结
    windows server 2008 磁盘挂载
    Git的使用
    VLAN原理详解
    Jumpserver的部署和使用
    进程与线程的理解
  • 原文地址:https://www.cnblogs.com/zbw582922417/p/10008263.html
Copyright © 2011-2022 走看看