zoukankan      html  css  js  c++  java
  • 简单Django框架推导及Django安装介绍

    小结

    软件开发架构
    c/s 架构 客户端 服务端
    b/s 架构 浏览器 服务端

    HTTP协议:超文本传输协议

    1. 四大特性

      1. 基于TCP/IP之上作用于应用层
      2. 基于请求响应
      3. 无状态(不保存状态,每次请求都认为是陌生的请求)
      4. 无连接 (一旦数据交互完成就断开连接) 对比:长连接(websocket(HTTP协议大补丁)
    2. 数据格式

      1. 请求格式:

        ​ 请求首行(请求方式,协议版本......)
        ​ 请求头(一大堆k:v键值对)

        ​ 请求体(真正的数据 ,发post请求的时候才有,如果是get请求不会有)

      2. 响应格式

        1. 响应首行
        2. 响应头
        3. 响应体
      3. 响应状态码

        用特定的数字表示一些意思

        1XX:服务端已经成功接收到了你的数据,正在处理,你可以继续提交其它数据
        2XX:服务端成功响应(200 OK,请求成功)

        3XX:重定向(请求当前页面功能时,服务端跳转到另一页面某功能)

        4XX:请求错误(404,请求资源不存在, 还有403 拒绝访问)
        5XX:服务器内部错误(500...)

    请求方式
    get请求:朝别人要数据

    ​ post请求:向别人提交数据(eg:用户登录)

    ​ url(统一资源定位符)

    1. 纯手撸web框架
    import socket
    
    server = socket.socket()
    server.bind(('127.0.0.1', 8080))
    server.listen(5)
    
    while True:
        conn, addr = server.accept()
        data = conn.recv(1024)
        #print(data) # 接收到的是一堆二进制
        conn.send(b'HTTP/1.1 200 OK 
    
    ')
        data = data.decode('utf-8')
        current_path = data.split('
    ')[0].split(' ')[1]
        print(current_path)  #/login
        if current_path == '/index':
            with open(r'index.html', 'rb')as f:
                conn.send(f.read())
        elif current_path == '/login':
            conn.send(b'login')
        else:
            conn.send(b'404 error')
        conn.close()
    
    1. 基于wsgiref模块
      该模块实现了上面两个手动的过程

      ​ 根据功能不同拆分成了不同的py文件

      ​ urls.py 只放路由与视图函数对应关系 (路由就是输入的后缀,如/index)

      ​ views.py 放视图函数(函数或类)

      ​ 拆分完成后, 如果想要添加功能,只需要在上面两个地方动手脚就好了

    ​ 3.动静态网页

    ​ 静态网页:数据是写死的,万年不变

    ​ 动态网页:数据是实时获取的

    ​ eg: 1.后端获取的当前时间展示到前端

    ​ 2.后端获取数据库中的数据展示到前端

    疑问:如何将后端获取的数据,传递给html页面

    ​ 后端获取的数据,传递给html页面,通过:模板渲染
    ​ jinja2
    ​ pip3 install jinja2
    ​ 模板语法(极其贴近python后端语法)

    <p>
       {{user}}
    </p>
    <p>
        {{user.name}}
    </p>
    <p>
        {{user['pwd']}}
    </p>
    <p>
        {{user.get('hobby')}}
    </p>
    
    {% for user_dic in user_list %}
    	<tr>
    		<td>
            	{{user_dic.id}}
            </td>
            <td>
            	{{user_dic.name}}
            </td>
            <td>{{user_dic.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
    	三者全是自己写的
    

    注意事项
    1.计算机的名称不能有中文
    2.一个pycharm窗口就是一个项目
    3.项目名里面尽量不要用中文

    django版本问题
    1.X 2.X 现在市面上用的比较多的还是1.X
    推荐你使用1.11.9~1.11.13

    django安装
    pip3 install django==1.11.11

    如何验证django是否安装成功
    命令行直接敲django-admin

    一个django项目就类似于是一所大学,而app就类似于大学里面的学院
    django其实就是用来一个个应用的
    一个app就相当于一块独立的功能
    用户功能
    管理功能
    django支持任意多个app

    如何使用
    命令行使用
    创建django项目
    django-admin startproject mysite
    启动django项目
    python manage.py runserver
    创建应用app
    python manage.py startapp app01

            注意:
                1.新创建的app需要你去settings配置文件中注册
                pycharm只会帮你注册第一个你在创建项目的时候写的应用
    






    ​ 注意:
    ​ 1.使用命令行创建django项目 不会自动帮你创建templates文件夹
    ​ 只能自己创建
    ​ 2
    ​ os.path.join(BASE_DIR, 'templates')


    ​ pycharm使用

    在启动django项目的时候 你一定要确保一个端口只有一个django项目

    项目名
    跟项目名同名的文件夹
    settings.py 暴露给用户的配置文件
    urls.py 路由与视图函数对应关系
    应用名
    migrations文件夹 存放数据库迁移记录的
    admin.py django后台管理
    apps.py 注册相关
    models.py 模型类
    tests.py 测试文件
    views.py 存放视图函数
    templates文件夹 存放html文件
    manage.py django入口文件

  • 相关阅读:
    Centos Another app is currently holding the yum lock
    Centos 重置密码
    Effective c#学习笔记(1)
    浅谈计算机编码
    mongodb java spring data
    VS2013 好用的插件
    xml存储bug
    VS 2008 生成操作中各个选项的差别
    程序权限控制
    给钛度产品的一些建议(Note)
  • 原文地址:https://www.cnblogs.com/chmily/p/11718081.html
Copyright © 2011-2022 走看看