Django学前简介 HTTP协议 超文本传输协议 1.四大特性 1.基于TCP/IP之上作用于应用层 2.基于请求响应 3.无状态 cookie session token... 4.无连接 长连接 websocket(HTTP协议的大补丁) 2.数据格式 请求
          Django学前简介
HTTP协议
超文本传输协议
1.四大特性
        1.基于TCP/IP之上作用于应用层
        2.基于请求响应
        3.无状态  cookie session token...
        4.无连接
                长连接  websocket(HTTP协议的大补丁)
    
    2.数据格式
        请求格式
            请求首行(请求方式,协议版本。。。)
            请求头(一大堆k:v键值对)
            \r\n
            请求体(真正的数据  发post请求的时候才有 如果是get请求不会有)
        
        响应格式
            响应首行
            响应头
            \r\n
            响应体
    3.响应状态码
        用特定的数字表示一些意思
        1XX:服务端已经成功接收到了你的数据 正在处理  你可以继续提交其他数据
        2XX:服务端成功响应(200请求成功)
        3XX:重定向
        4XX:请求错误(404 请求资源不存在   403 拒绝访问)
        5XX:服务器内部错误(500 ) 
wsgiref模块
该模块实现了上面两个手动的过程
    根据功能不同拆分成了不同的py文件
    urls.py   只放路由与视图函数对应关系
    views.py  放视图函数(函数,类)
    拆分完成之后 如果想要添加功能,你仅仅只需要在上面两个地方动手脚就可以了 
动静态网页
静态网页
? 数据是写死的,万年不变
动态网页
数据是实时获取的
- 后端获取当前时间展示到前端
 - 后端获取数据库中的数据展示到前端
 
模板渲染
如何将后端获取的数据 传递给html页面
jinja2模块
? 模板语法(极其贴近python后端语法)
? 变量相关:{{}}
 ? 逻辑相关:{%%}
<p>{{ user }}</p>
        <p>{{ user.name }}</p>
        <p>{{ user['pwd'] }}</p>
        <p>{{ user.get('hobby') }}</p>
        {% for user_dict in user_list %}
            <tr>
                <td>{{ user_dict.id }}</td>
                <td>{{ user_dict.name }}</td>
                <td>{{ user_dict.pwd }}</td>
            </tr>
        {% endfor %} 
python三大主流web框架
Django
- 大而全 自带的功能特别特别多 类似于航空母舰
 - 有时候过于笨重
 
Flask
- 小而精 自带的功能特别特别少 类似于游骑兵
 - 第三方的模块特别特别多,如果将flask第三方模块全部加起来 完全可以超过django
 - 比较依赖于第三方模块
 
Tornado
- 异步非阻塞
 - 牛逼到可以开发游戏服务器
 
A:socket部分
    B:路由与视图函数对应关系
    C:模板语法
    
    Django:
        A用的别人的  wsgiref
        B自己写的
        C自己写的
    Flask
        A用的别人的  werkzeug(基于wsgiref)
        B自己写的
        C用的别人的  jinja2
    Tornado
        三者全是自己写的 
Django的安装
注意事项
- 计算机的名称不能有中文
 - 一个pycharm窗口就是一个项目
 - 项目名里面尽量不要用中文
 
django版本问题
 1.X 2.X 现在市面上用的比较多的还是1.X
 推荐你使用1.11.9~1.11.13
django安装
 pip3 install django==1.11.11
如何验证django是否安装成功
 命令行直接敲django-admin
django的功能
- 一个django项目就类似于是一所大学,而app就类似于大学里面的学院
 - django其实就是用来一个个应用的
 - 一个app就相当于一块独立的功能
 - django支持任意多个app
 
使用命令行创建django项目
- 创建django项目
django-admin startproject mysite - 启动django项目
python manage.py runserver - 创建应用app
python manage.py startapp app01 
注意事项
- 使用命令行创建django项目 不会自动帮你创建templates文件夹只能自己创建。
 settings文件中 需要你手动在TEMPLATES写配置
os.path.join(BASE_DIR, ‘templates‘)- pycharm只会帮你注册第一个你在创建项目的时候写的应用。
 新创建的app需要你去settings配置文件中注册。
Pycharm创建Django项目
pycharm创建
- 能够自动帮你创建template文件夹和路径配置。
 - 也能够支持创建一个应用并且自动注册。
 
Django项目文件分析
跟项目名同名的文件夹 settings.py 暴露给用户的配置文件 urls.py 路由与视图函数对应关系 应用名 migrations文件夹 存放数据库迁移记录的 admin.py django后台管理 apps.py 注册相关 models.py 模型类 tests.py 测试文件 views.py 存放视图函数 templates文件夹 存放html文件 manage.py django入口文件
