• django的介绍


    Web框架的本质
      我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端。

    半成品自定义web框架

     
     
    import socket
    
    sk = socket.socket()
    sk.bind(("127.0.0.1", 80))
    sk.listen()
    
    
    while True:
        conn, addr = sk.accept()
        data = conn.recv(8096)
        conn.send(b"OK")
        conn.close()
     
     

    可以说Web服务本质上都是在这十几行代码基础上扩展出来的。这段代码就是它们的祖宗。

    用户的浏览器一输入网址,会给服务端发送数据,那浏览器会发送什么数据?怎么发?这个谁来定? 你这个网站是这个规定,他那个网站按照他那个规定,这互联网还能玩么?

    所以,必须有一个统一的规则,让大家发送消息、接收消息的时候有个格式依据,不能随便写。

    这个规则就是HTTP协议,以后浏览器发送请求信息也好,服务器回复响应信息也罢,都要按照这个规则来。

    HTTP协议

    超文本传输协议:规定了客户端与服务端消息传输的格式


    四大特性;
      1.基于TCP/IP协议作用于应用层的协议
      2.基于响应请求
      3.无状态
      4.无连接

    数据格式之请求:

      请求首行

      请求头(一堆k,v键值对)

      

      请求体

    请求首行
    b'GET / HTTP/1.1
    
    请求头(一大堆kv键值对)
    Host: 127.0.0.1:8080
    
    Connection: keep-alive
    
    Upgrade-Insecure-Requests: 1
    
    UserAgent:Mozilla/5.0(WindowsNT10.0;WOW64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36
    
    Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signedexchange;v=b3
    
    Accept-Encoding: gzip, deflate, br
    
    Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
    
    
    
    请求体
    '

    数据格式之响应:

      响应首行

      响应头(一堆k,v键值对)

      

      响应体(post 请求携带的数据)

    响应状态码

    1xx 服务器已经成功接受到你的数据正在处理,你可以继续提交其他数据

    2xx 请求成功,服务器已经将你请求的数据发送给你了

    3xx 重定向

    4xx 请求资源不存在

    5xx 服务器错误

    模版渲染

      

    后端生成的数据直接传递给前端页面使用(并且前端页面可以灵活的操作该数据)>>>>模版语法

    模版语法需要依赖于第三方模块

    pip3 install jinja2

    模版语法  jinja2支持前端直接使用类似于python的语法操作数据

    <p>{{ user_dic }}</p>
    <p>{{ user_dic.name }}</p>
    <p>{{ user_dic['password'] }}</p>
    <p>{{ user_dic.get('name') }}</p>
    {% for user in user_dict %}
        <tr>
            <td>{{ user.id }}</td>
            <td>{{ user.name }}</td>
            <td>{{ user.password }}</td>
        </tr>
    {% endfor %}

    python三大主流web框架

    Django:大而全,自带了很多功能模块,类似于航空母舰 (缺点:有点笨重)
    Flask:短小精悍,自带的功能模块特别少,大部分都是依赖于第三方模块(小而轻)
    Tornado:异步非阻塞 主要用在处理高io 多路复用的情况 可以写游戏后端

    a:socket

    b:路由与视图函数

    c:模板渲染

    Django:

     a.用的别人的 wsgiref
     b.自己写的
     c.自己写的
     

    Flask:

     a用的别人的 werkzeug
     b自己写的
     c用的别人的 jinja2
     

    Tornado:

     a,b,c都是自己写的

    注意事项(*********):
      1.计算机的名称不能有中文
      2.一个pycharm窗口就是一个项目,不要多个项目放在一个窗口里面
      3.项目名不能起中文
     

    Django简介

    版本问题

      djang下载

        推荐下载1.11.11版本

      命令行直接下载

        pip3 install django==1.11.11

      pycharm下载

      验证是否下载成功

        django-admin

     创建django项目的方式
      方式1(命令行创建):
         创建django项目
           django-admin startproject 项目名
            创建app应用
            python3 manage.py startapp app01
       启动django项目
             python3 manage.py runserver 
          ps:用命令行创建django默认不会自动创建templates文件夹
            需要你手动自己创建(注意改文件夹路径是否被添加配置文件中)自己创建的话在配置文件中
          TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates',
          'DIRS': [os.path.join(BASE_DIR, 'templates')]

      方式2(pycharm创建)
         FILE >>> new project 选择第二个django 需要注意名字不能有中文,选择本地的解释器,勾选后台管理
           创建app
           pycharm命令行创建
             python3 manage.py startapp app01
            Tools下面run manage task功能栏
          启动点小绿色箭头
        强调:
            1.用django一定要保证只有一个在运行状态 切记切记!!!!!!!
           2.一定记得清浏览器的缓存

    app(应用)的概念

      一个django项目就是一所大学

      app就是大学里面的学院

    注意新创建的app需要在配置文件中注册才能生效(*******)

    INSTALLED_APPS = [

     'django.contrib.admin',
     'django.contrib.auth',
     'django.contrib.contenttypes',
     'django.contrib.sessions',
     'django.contrib.messages',
     'django.contrib.staticfiles',

    在后面加上自己的app

     'app01.apps.App01Config' # 可以用全称

     'app01' # 也可以简写
     ]

    django各个文件的作用

      应用名

     migrations 数据库迁移记录相关数据 
     admin.py   django后台管理相关
     models.py   模型表相关
     views.py   视图函数相关

    项目名

    settings.py 配置文件
    urls.py 路由与视图函数的映射关系 
    templates:项目用到的所有的html文件
    manage.py;django入口文件
    django小白必会三板斧(在app的views 中加上)
    from django.shortcuts import render,HttpResponse,redirect

    HttpResponse 返回字符串

    render 返回一个html页面

      两种给前端页面传值的方式
        def reg(request):
            user_dict = {'name':'jason','password':'123'}
            return render(request,'reg.html',{'user_dict':user_dict})
        def reg(request):
            user_dict = {'name':'jason','password':'123'}
            return render(request,'reg.html',locals())

    redirect 重定向

      django识别到你的代码变化之后会自动,但是有时候反应速度比较慢你可以手动重启,你也可以多刷新几次浏览器

  • 相关阅读:
    【Intellij】Intellij Idea 2017创建web项目及tomcat部署实战
    【IntelliJ 】IntelliJ IDEA 15 创建maven项目
    【IntelliJ】IntelliJ IDEA的安装破解及使用
    maven坐标查询
    【PowerDesigner】PowerDesigner之CDM、PDM、SQL之间转换
    【c3p0】 C3P0的三种配置方式以及基本配置项详解
    LinkedHashMap和HashMap的比较使用
    【全局变量】mysql查看全局变量以及设置全局变量的值
    Redis总结
    Java高概率面试题目—finally
  • 原文地址:https://www.cnblogs.com/wangtenghui/p/10979886.html
Copyright © 2020-2023  润新知