• Django基础介绍


    Django

    web应用的本质

    socket网络编程:

    ​ 架构:C/S架构

    ​ 协议:TCP/UDP协议

    ​ 传输层

    web应用:

    ​ 架构:B/S架构

    ​ 协议:Http协议

    ​ 应用层

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

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

    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,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
    Accept-Encoding: gzip, deflate, br
    Accept-Language: zh-CN,zh;q=0.9 
    
    请求体:	
    dsjahbdjsahjdsa
    
    
    响应头:
    HTTP/1.1 200 OK
    
    响应体:
    "hello world"
    用户看到的内容
    
    
    改造之后, 动态的server:
    def f1():
    return bytes('xxxx', encoding='utf-8')
    
    def f2():
    return bytes('oooo', encoding='utf-8')
    
    def f3():
    return bytes('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)
    # print(data)
    ### 转成字符串类型
    data_str = str(data, encoding='utf-8')
    
    header_list = data_str.split('
    
    ')
    headers = header_list[0]
    url = headers.split('
    ')[0].split(' ')[1]
    
    ### 判断url
    # if url == '/xxx':
    #     res = bytes('xxxx', encoding='utf-8')
    # elif url == '/ooo':
    #     res = bytes('oooo', encoding='utf-8')
    # else:
    #     res = bytes('404 not found', encoding='utf-8')
    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.路由系统:

    ​ url ===> 函数

    3.模板引擎渲染

    ​ 1)自己定义的规则

    ​ 2)使用第三方工具 (jinja2)

    web框架的分类

    第一维度分类:

    1.1、2、3 ---> tornado

    2.1(引入第三方)、2、3 ---> django (wsgiref/uwsgi)

    3.1(引入第三方)、2、3(引入第三方) ---> flask

    第二维度分类:

    1.django

    - orm
    - session
    - form表单验证
    - 。。。
    

    2.其他

    django的安装和启动

    1.django的安装:
    a. pip3 install django==1.11.22 -i https://pypi.tuna.tsinghua.edu.cn/simple

    b. pycharm安装

    2.django的创建:
    a. django-admin startproject xxx

    b. pycharm创建

    3.django目录结构:

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

    4.启动django服务:
    pycharm启动

    django的路由介绍

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

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

    def index(request):

    ​ return HttpResponse('index')

    django的模板介绍

    1.模板渲染函数:
    def f1(request):
    return render(request, 'f1.html')

    2.变量替换:
    name = 'zekai'

    render(request, 'f1.html', {"name":name})

    html页面:

    ​ <h2>{{ xxx }}</h2>

    3.以后再去创建django项目的时候, 需要做的几个操作:
    到settings.py中, 配置:

    1. STATIC_URL = '/static/'
      STATICFILES_DIRS = (
      os.path.join(BASE_DIR, 'static'),
      )
      逗号不能少
      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')]

    4. django的连接数据库操作

      a.pymysql连接
      b.django的orm连接

  • 相关阅读:
    HEOI2018——welcome to NOI2018
    【HEOI 2018】Day2 T2 林克卡特树
    【康托展开】
    【省选模拟测试3】
    【BZOJ 2850】巧克力王国
    【BZOJ 3569】 DZY Loves Chinese II
    【BZOJ 4652】【NOI 2016】循环之美
    【BZOJ 3534】: [Sdoi2014]重建
    mysql 的研究
    mysql 的研究
  • 原文地址:https://www.cnblogs.com/gaohuayan/p/11317665.html
Copyright © 2020-2023  润新知