路由层,视图层,模板层 总结

路由:
    1 第一个参数,传正则表达式
        '^$'  视图函数index
        tets/(d+)
        test/2014
        ....
        ''   404错误页面
    2 无名分组:(d+)用括号分组
    3 有名分组:(?P<year>[0-9]{4})   视图函数:year必须对应,位置可以乱
    4 有名和无名不要同时使用
    5 路由分发:   匹配正则   include('app.urls')---两种写法
        跟路由配置,再settings里
    6 反向解析  
        视图函数:url=reverse('name',args=(123,))  有名分组:url=reverse('name',kw={...})
        模板里:  {% url 'name' %}  ---->{% url 'name' 参数1 参数2 %}----》{% url 'name' key=参数1 key=参数2 %}
    7 名称空间:include('app.urls',namespace='app01')
        反向解析,通过namespace来找
        url=reverse('app01:name',args=(123,))
        {% url 'app01:name' %}
    8 伪静态
    9 2.0 和1.几区别:url 就是re_path   2.0多了个path
    10 path 精准匹配,不支持正则
        int str slug uuid  path 
        <int:year>----》视图函数:参数名也叫year
        自定义转换器:
            regex=正则
            to_python
            to_url
视图:
    1 request对象:method  POST  GET FILES path  get_full_path() 
    2 response 对象  三件套 Jsonresponse  django.http improt Jsonresponse
    3 CBV  View : get(self,request)   post(self,request)  dispatch  一定要return
        再路由里怎么写:类名.as_view()
    4 MVC和MTV
    5 文件上传 基于form表单  type 是file  
        重点:<form action="" method="post" enctype="multipart/form-data">
                <input type="file" name=‘1’>
                <input type="file" name=‘2’>
                <input type="file" name=‘3’>
              </form>
        body体的内容格式:b'name=lqz&age=18'   
        FILES是个字典:字典取值 ,去出来是个文件对象 
        补充:直接循环file对象
模板:
    1 {{ }}
        据点符:深度查询,点函数(不能加括号,不能传参数)
        过滤器:
    2 {% %}
        for  for 嵌套 if   forloop   empty
        if   in is >....
        with 给变量重命名   1 aa=aaaaa.aaaaa   2 aaaaa.aaaaa as aa
        
    3 自定义标签,自定义过滤器
        from django import template

        register=template.Library()

        @register.filter(name='xxx')
        def aa(x,y):
            return 'dd'

        @register.simple_tag(name='yy')
        def bb(x,y,z,t):
            return 'ccc'
            
        模板用:
            {% load mytest%}
            过滤器:{{参数|xxx:'参数'}}
            标签:{% yyy 参数 参数 参数 %}
            
            最大区别:过滤器,可以放在if判断里
            
                <ul>
                {% if data%}
                
                {%endif%}

                </ul>
    静态文件引入的三种方式
        一:
        <link rel="stylesheet" href="/static/dd/ssmycss.css">
        二:
            {% load static %}
            <link rel="stylesheet" href="{% static 'dd/ss/mycss.css' %}">
            {#    返回值:/static/dd/ss/mycss.css#}
        三:
            <link rel="stylesheet" href="{% get_static_prefix %}dd/ss/mycss.css">
    
    模板导入和继承
        include 和extend
    
模型层之单表操作:
        1     'default': {
                'ENGINE': 'django.db.backends.mysql',
                'NAME': 'mytest',
                'HOST': '127.0.0.1',
                'PORT': 3306,
                'USER': 'root',
                'PASSWORD': 'egon123'
            }
        2 init.py  
            import pymysql
            # django 默认用mysqldb连接mysql数据库,但是mysqldb这个模块不支持python3.0以后的版本,
            # 所以用pymysql来替换mysqldb
            pymysql.install_as_MySQLdb()
        
                    
        
原文地址:https://www.cnblogs.com/xujinjin18/p/9620463.html