• django day 01 web应用简介 基于socket手写web服务器 用wsgiref模块写一个web navicate使用 jinja2代替字符串的替换


    django访问页面的整个过程

    用户在浏览器输入网址,网址发给服务器,url控制器先来接手,通过url匹配一下交给不同的视图来处理,然后视图去model拿数据,model去数据库拿数据,

    model拿完数据,把数据给视图,视图再把数据给模板(模板就是html页面),模板最终返回给浏览器,也就是页面。这就是django完整访问页面的过程。

    浏览器发消息称之为请求,服务端回消息称之为响应。

     简单的web框架

    表示换行

    import socket
    sk=socket.socket()
    sk.bind(("127.0.0.1",8080))#插上手机卡
    #监听
    sk.listen()#等待连接
    
    while 1:
        #获取与客户端的连接
        conn, _=sk.accept()
        #接受客户端发来消息
        data=conn.recv(8096)
        print(data)
        #给客户端回复消息
        conn.send(b'http/1.1 200 OK
    
    ')
        conn.send(b'<h1>hello world</h1>')
        #关闭
        conn.close()
        sk.close()

    http协议简单来说就是收发消息的格式要求    的r是return的意思,回到行首

    根据不同的路径返回不同的内容

    """
    完善的web服务端示例
    根据不同的路径返回不同的内容
    """
    
    import socket
    
    # 生成socket实例对象
    sk = socket.socket()
    # 绑定IP和端口
    sk.bind(("127.0.0.1", 8001))
    # 监听
    sk.listen()
    
    # 写一个死循环,一直等待客户端来连我
    while 1:
        # 获取与客户端的连接
        conn, _ = sk.accept()
        # 接收客户端发来消息
        data = conn.recv(8096)
        # 把收到的数据转成字符串类型
        data_str = str(data, encoding="utf-8")  # bytes("str", enconding="utf-8")
        # print(data_str)
        # 用
    去切割上面的字符串
        l1 = data_str.split("
    ")
        # print(l1[0])
        # 按照空格切割上面的字符串
        l2 = l1[0].split()
        url = l2[1]
        # 给客户端回复消息
        conn.send(b'http/1.1 200 OK
    content-type:text/html; charset=utf-8
    
    ')
        # 想让浏览器在页面上显示出来的内容都是响应正文
    
        # 根据不同的url返回不同的内容
        if url == "/yimi/":
            response = b'<h1>hello yimi!</h1>'
        elif url == "/xiaohei/":
            response = b'<h1>hello xiaohei!</h1>'
        else:
            response = b'<h1>404! not found!</h1>'
        conn.send(response)
        # 关闭
        conn.close()
        sk.close()
    

     返回具体的html页面服务端

    """
    完善的web服务端示例
    函数版根据不同的路径返回不同的内容
    进阶函数版 不写if判断了,用url名字去找对应的函数名
    返回html页面
    """
    
    import socket
    
    # 生成socket实例对象
    sk = socket.socket()
    # 绑定IP和端口
    sk.bind(("127.0.0.1", 8001))
    # 监听
    sk.listen()
    
    # 定义一个处理/yimi/的函数
    def yimi(url):
        with open("yimi.html", "rb") as f:
           ret = f.read()
        return ret
    
    
    # 定义一个处理/xiaohei/的函数
    def xiaohei(url):
        with open("xiaohei.html", "rb") as f:
           ret = f.read()
        return ret
    
    
    # 定义一个专门用来处理404的函数
    def f404(url):
        ret = "你访问的这个{} 找不到".format(url)
        return bytes(ret, encoding="utf-8")
    
    
    url_func = [
        ("/yimi/", yimi),
        ("/xiaohei/", xiaohei),
    ]
    
    
    # 写一个死循环,一直等待客户端来连我
    while 1:
        # 获取与客户端的连接
        conn, _ = sk.accept()
        # 接收客户端发来消息
        data = conn.recv(8096)
        # 把收到的数据转成字符串类型
        data_str = str(data, encoding="utf-8")  # bytes("str", enconding="utf-8")
        # print(data_str)
        # 用
    去切割上面的字符串
        l1 = data_str.split("
    ")
        # print(l1[0])
        # 按照空格切割上面的字符串
        l2 = l1[0].split()
        url = l2[1]
        # 给客户端回复消息
        conn.send(b'http/1.1 200 OK
    content-type:text/html; charset=utf-8
    
    ')
        # 想让浏览器在页面上显示出来的内容都是响应正文
    
        # 根据不同的url返回不同的内容
        # 去url_func里面找对应关系
        for i in url_func:
            if i[0] == url:
                func = i[1]
                break
        # 找不到对应关系就默认执行f404函数
        else:
            func = f404
        # 拿到函数的执行结果
        response = func(url)
        # 将函数返回的结果发送给浏览器
        conn.send(response)
        # 关闭连接
        conn.close()
    

    静态网页与动态网站的区别

    静态网站:数据不变

    动态网站:数据会变化

    返回动态的html 页面

    qt是什么?

    qt可以很轻松的帮你做带界面的软件,甚至不需要你投入很大精力。

    一.web应用程序是什么

    web应用程序是一种可以通过web访问的应用程序,用户只需要浏览器即可不需要其他软件。

    web应用程序的优点:

    web应用程序的缺点:

    所有django入口文件都是manage.py开始的

    settings配置相关的

    urls路径和函数对应关系的文件

    pycharm创建django项目
    file--------->new project----------->django 路径E:python10day60mysite
    不要用new environment using 用existing interpreter
    选这个三角下拉框中 电脑上的python.exe解释器
    然后open in new window 在新的窗口打开不要用当前窗口

    所有管理django项目的文件称之为manage.py

    相关代码

    url文件下的相关代码

    from django.conf.urls import url
    from django.contrib import admin
    from django.shortcuts  import HttpResponse
    
    def yimi(request):
        #request参数保存了所有用户和相关浏览器的数据
        with open("./templates/yiming.html",'r',encoding='utf-8') as f:
            data=f.read()
        return HttpResponse(data)
    
    def xiaohei(request):
        #request 参数保存了所有用户浏览器请求相关数据
        return HttpResponse('hello xiaohei!haha 小黑你真黑啊')
    
    #保存了路径和函数的对应关系
    urlpatterns = [
        url(r'^yimi/', yimi),
        url(r'^xiaohei/', xiaohei),
    ]
    

    3. 新建Django项目
    命令行创建:
    django-admin startproject mysite
    pycharm创建:
    1. File --> New project --> 左侧选Django --> 右侧填项目路径,并且勾选python.exe  app里面可以填写app01

    4. 设置Django项目:
    1. settings.py
    1. 配置HTML文件存放的位置
    2. 配置静态文件存放的位置

    第七个视频14分36秒会详细讲解site的关系 

    配置 html文件存放的位置

    配置静态文件存放的位置

    今日相关知识点

    get相当于获取一个网页

    post相当于给服务端提交数据

  • 相关阅读:
    AngularJS入门教程
    mobile web retina 下 1px 边框解决方案
    Python字典猜解
    20145313exp9
    20145313张雪纯Exp8 Web基础
    20145313张雪纯exp7
    20145313张雪纯信息搜集与漏洞扫描
    计算机病毒静态分析2
    计算机病毒静态分析1
    20145313张雪纯MSF基础应用实验
  • 原文地址:https://www.cnblogs.com/wangmiaolu/p/9544081.html
Copyright © 2020-2023  润新知