zoukankan      html  css  js  c++  java
  • django1

    1 web应用

    1 用浏览器访问的应用程序
    2 优点:
    	-不需要客户端
        -更新直接在服务端更新,客户端感知不到
        -跨平台性好
    3 缺点:
    	-强调浏览器的适用性
        -用户的数据都保存在软件厂商那边
    

    2 bs、cs架构

    1 bs:浏览器---服务端   (本质还是cs)
    2 cs:客户端---服务端
    

    3 手写一个web应用

    1 客户端是浏览器,服务端自己写(python)
    
    
    2 静态页面,动态页面
    	-静态页面:静态的html,内容不会改变,每次访问看到的数据都一样
        -动态页面:页面的数据会发生变化,每次访问看到的可能都不一样(数据来源可能是数据库)
    

    3.1 main.py

    # 1 写一个web应用的服务端,通过浏览器(客户端),来访问
    
    import socket
    
    server = socket.socket()
    
    # server.bind(('127.0.0.1', 8080))
    server.bind(('0.0.0.0', 8080))
    server.listen(5)
    
    while True:
        conn, addr = server.accept()
        # 接收浏览器传过来的数据
        data = conn.recv(1024)
        print(data)
        # 返回给浏览器数据(不符合http协议)
        # conn.send(b'hello world')
        # 返回数据符合http协议
        # conn.send(b'HTTP/1.1 200 ok 
    
     hello world')
    
        # 返回符合html格式的数据
        # conn.send('HTTP/1.1 200 ok 
    
     <h1>title</h1>'.encode('utf-8'))
    
        ## 返回一个html页面,打开文件,转成二进制,send一下
        # with open('index.html','r',encoding='utf-8') as f:
        #     data=f.read()
        #
        # response='HTTP/1.1 200 ok 
    
     %s'%data
        # conn.send(response.encode('utf-8'))
    
        ## 实现动态页面(静态页面,动态页面)
        # 在index.html中写一个特殊标记,使用python的变量去替换这个特殊标记
        import time
        ctime=time.time()  # 可能是数据库查询出来的
        with open('index.html','r',encoding='utf-8') as f:
            data=f.read().replace('{{time}}',str(ctime))
        response='HTTP/1.1 200 ok 
    
     %s'%data
        conn.send(response.encode('utf-8'))
    
    
        conn.close()
    

    3.2 index.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    {{time}}
    <br>
    <br>
    
    <img height="100" width="100" src="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1601009198247&di=b7b696110501b0e1ba3b5c508335c7b2&imgtype=0&src=http%3A%2F%2Fb-ssl.duitang.com%2Fuploads%2Fitem%2F201509%2F29%2F20150929213123_Mvy4S.jpeg" alt="">
    </body>
    </html>
    

    4 http协议

    1 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于万维网服务器与本地浏览器之间传输超文本的传送协议
    2 应用层的协议
    3 http协议特性(记一下)
    	-1 基于tcp/ip之上的应用层协议
        -2 基于请求-响应模式
        -3 无状态保存
        -4 无连接
    
    
    
    4  请求协议(浏览器发出来的)(记住)
    三部分:请求首行,请求头,请求体
    
    '''
    # 请求首行(以第一个
    区分的),
    # 请求方式:GET  请求地址:/lqz/handsome   协议:http   版本:1.1版本
    GET /lqz/handsome HTTP/1.1
    
    
    # 请求头(key:value形式)
    Host: 192.168.11.211:8080
              # 主机名
    Connection: keep-alive
                 # 长链接
    Cache-Control: max-age=0
    
    Upgrade-Insecure-Requests: 1
    
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36
            # 客户端类型
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
    
    Accept-Encoding: gzip, deflate
    
    Accept-Language: zh-CN,zh;q=0.9
    
    '
    
    # 
    
      下面的是请求体的内容
    
    '''
    
    
    5 响应协议
    '''
    # 响应首行  响应协议和版本:HTTP/1.1  响应的状态码和标志:200 ok  
    HTTP/1.1 200 ok 
    # 响应头(key:value形式)
    key:value
    key:valu
    
    
    
    # 响应体:在浏览器里看到的东西(浏览器能把下面的html渲染成好看的样子)
    
    <!DOCTYPE html>
    <html lang="en">
    <h1>hello</h1>
    </html>
    '''
    
    6 响应状态码
    	-1xx:请求正在处理(用户一般看不到)        
        -2xx:请求成功(200)
        -3xx:重定向(301  302)访问一个地址,转到另一个地址
        -4xx:客户端错误(404,403)
        -5xx:服务端错误(502)
    200 OK                        //客户端请求成功
    400 Bad Request               //客户端请求有语法错误,不能被服务器所理解
    401 Unauthorized              //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用 
    403 Forbidden                 //服务器收到请求,但是拒绝提供服务
    404 Not Found                 //请求资源不存在,eg:输入了错误的URL
    500 Internal Server Error     //服务器发生不可预期的错误
    503 Server Unavailable        //服务器当前不能处理客户端的请求,一段时间后可能恢复正常
    
     7 url:统一资源定位符
    	# 格式
        http://127.0.0.1:8080/order.html
        ftp://xxx
        协议://IP:端口(80)/路径?name=lqz&age=18
        统一资源定位符是可以从互联网上访问资源的一种方式,协议就是资源的地址
    

    5 web框架

    1 web框架就是在以上十几行代码基础张扩展出来的,有很多简单方便使用的方法,大大提高了开发的效率
    

    6 基于wsgiref写一个web框架

    1 socket自己写的,借助于一个模块,已经实现了socket
    2 wsgiref:django默认使用的
    
    3 在web框架上继续开发
    	-以后路径都去urls.py中写
        -路径匹配以后执行的函数,都放在views.py
        -数据库相关操作,在models.py中
    
    

    7 django与其他web框架区别

    1 python中主流web框架:django,flask,tornado(性能高),sanic,fastapi。。。。。
    socket假设叫:a
    路由的映射关系:b
    模板渲染:     c
    自己写的web框架:  a:用了第三方wsgiref  b:自己写的  c:自己写的
    django:         a:用了第三方wsgiref   b:自己写的  c:自己写的
    flask            a:用了第三方          b:自己写的  c:用了第三方
    tornado          a:自己写的           b:自己写的  c:自己写的
    

    8 django安装与简单使用

    0 django的版本:1.x  2.x  3.x  版本之间是由差距的
    1 安装的几种方式
    	-在cmd中敲:pip3 install django==1.11.9         默认装最新版本(3.x)
        -pycharm中--》setting--》解释器--》点+号,选择版本,安装
        -pycharm的Terminal中敲  pip3 install django==1.11.9 
        
    2 装完以后,会多个一个django-admin的命令,在D:python38Scripts 路径下
        由于D:python38Scripts之前就被加入到环境变量,在任意路径指向django-admin都能找到
            
    3 django-admin是用来创建django项目的命令(创建项目就是生成目录,生成一堆py文件)
    
    4 创建项目(在哪个路径下指向,项目就创建在哪,在c盘根路径)
    	django-admin startproject 项目名
        django-admin startproject myfirstdjango
    5 创建完以后,用pycharm打开即可
    6 在项目根路径创建app
    	python3 manage.py startapp app名字
    
    	
    7 django目录结构
    	-views.py:函数,视图函数
        -urls.py:路径(路由)和视图函数的对应关系
        -models.py:表模型(数据库操作相关)
    
    
    8 最简单的方式,通过pychrm创建
        
        
    100:问题
    	1 如果计算机名是中文,项目路径中有中文空格,都可能会报错
        2 python3.7或者3.8 对django1.x的版本兼容性可能存在问题,1.x版本推荐用python3.6
    
  • 相关阅读:
    【BZOJ 3709: [PA2014]Bohater】
    清北学堂2019.8.10 & 清北学堂2019.8.11 & 清北学堂2019.8.12
    清北学堂2019.8.9
    清北学堂2019.8.8
    清北学堂2019.8.7
    清北学堂2019.8.6
    【洛谷T89379 【qbxt】复读警告】
    【洛谷T89353 【BIO】RGB三角形】
    【洛谷T89359 扫雷】
    【洛谷P2016战略游戏】
  • 原文地址:https://www.cnblogs.com/feiguoguobokeyuan/p/13962338.html
Copyright © 2011-2022 走看看