zoukankan      html  css  js  c++  java
  • django_01

    web应用本质

    socket网络编程:

    架构: c/s架构

    协议: tcp/udp协议

    作用于传输层

    web应用:

    架构: b/s架构

    协议: Http协议

    作用于应用层

    ps:

    字符串转字节: bytes('字符串', encoding='utf-8')

    字节转字符串: str(字节, encoding='utf-8')

    自定义一个web框架

    目标: 将自定制的server变成一个动态的server

    Http协议:
    请求头:
    GET / HTTP/1.1
    Host: 127.0.0.1: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/75.0.3770.142 Safari/537.36 Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,im age/apng,*/*;q=0.8,application/signed-exchange;v=b3
    Accept-Encoding: gzip, deflate, br
    Accept-Language: zh-CN,zh;q=0.9
    请求体: 就是具体的内容
    响应头:
    http/1.1 200 OK
    响应体: 用户看到的内容
    def f1():
    return bytes('xxxx',encoding='utf-8')

    def f2():
       return bytes('oooo',encoding='utf-8')

    def f3():
    return tytes('aaaa',encoding='utf-8')
    # 路由系统, 作用: 将客户端请求的url映射到相对应的函数, 最后直接执行即可
    routes = [
      ('/xxx',f1),
      ('/ooo',f2),
      ('/aaa',f3),
    ]

    def run():
    import socket
       sock = socket.socket()
       sock.bind(('127.0.0.1',8080))
       sock.listen(5)
       
       while True:
           conn, addr = sock.accept()
           data = conn.recv(8090)
           # 转换成字符串类型
           data_str = str(data,encoding='utf-8')
           
           header_list = data_str.split(' ')
           headers = header_list[0]
           url = headers.split(' ')[0].split(' ')[1]
           
           func_name = None
           for items in routes:
               if items[0] == url:
                   func_name = items[1]
                   break
                   
               if func_name:
                   res = func_name()
               else:
                   res - bytes('404 not found',encoding='utf-8')
                   
               conn.send(bytes('http/1.1 200 OK ',encoding='utf-8'))
               conn.send(res)
               conn.close()

    自己写web框架:

    1. 自己写socket服务端

    2. 路由系统:

      1. url -----> 函数

    3. 模板引擎渲染:

      1. 自己定义的规则

      2. 使用第三方的工具(jinja2)

    web框架的分类:

    第一种维度分类:

    1. a, b, c ---> tornado

    2. a(引入第三方), b, c ---> Django (wsgiref/uwsgi)

    3. a(引入第三方), b, c(引入第三方) ---> flask

    第二种维度分类:

    1. Django
    1. 其它

    Django的安装和启动

    django的安装:
        1. pip install django==1.11.2 -i https://pypi.tuna.tsinghua.edu.cn/simple
    1. pytcharm安装

    djangou的创建:
    1. django_admin startproject xxx

    2. pycharm创建

    django目录结构:

    s9day54:
    s9day54:
    settings.py: 配置文件
    urls.py: 路由映射关系
    wsgi.py : socket服务端文件
    manage.py: 管理文件

    启动django服务:pycharm启动

    django的路由介绍

    添加路由和函数的对应关系:

    urlpatterns - [
       url(r'^admin/',admin.site.urls),
       url(r'^index/',index),
    ]

    def index(request):
       return HttpResponse('index')

    django的模板介绍

    # 模板渲染函数:
    def f1(request):
       return render(request,'f1.html')
    # 变量替换
    name = 'zekai'
    render(request, 'f1.html',{'name':name})
    # html页面:
    <h2>{{ xxx }}</h2>

    创建django项目的时候, 需要做的几个操作:

    # 在settings.py中,配置以下几点
    # 1. static目录需要自己创建, os.path.join(BASE_DIR,'static'), 最后这个逗号不能少
    STATIC_URL = '/static/'
    STATICFILES_DIRS = (
    os.path.join(BASE_DIR,'static'),
    )

    # 2.
    MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    #'django.middleware.csrf.CsrfViewMiddleware',
       'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware',
    ]

    # 3.
    'DIRS': [os.path.join(BASE_DIR, 'templates')]

     

     

     

  • 相关阅读:
    前端css实现最基本的时间轴
    前端css实现最基本的时间轴
    那些年遇见的奇葩编程书籍封面
    那些年遇见的奇葩编程书籍封面
    2018年国内就业薪资高的7大编程语言排行
    乡愁
    乡愁
    微光系列之青春无敌美少女
    1287 矩阵乘法
    一些关于DP的知识
  • 原文地址:https://www.cnblogs.com/fengxuemuyangren/p/11317877.html
Copyright © 2011-2022 走看看