• Django


    什么是web应用?

    软件开发架构:

      c/s架构

        客户端

        服务端

      b/s架构

        浏览器

        服务器

    HTTP协议:

    超文本传输协议,规定了客户端与服务端之间传输数据的格式

    HTTP四大特性:

    1.它是基于tcp/ip协议应用在应用层的协议

    2.基于请求响应

    3.无状态

    4.无连接

    为什么说其无状态无连接:因为http请求建立起连接后会立马断开并重新建立连接,所以说这样是没有状态的,另外,服务端只能等待客户端连接,不会主动发送数据给客户端

    数据格式之请求:

    1.请求首行

    2.请求头(一堆k与v的键对值)

      

    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; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 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
    Token: bdsjalbdjsalbdjsa

    注意这里是空格!!!

    4.请求体(post请求携带的数据)

    数据格式之响应:

    1.响应首行

    2.响应头(k与v的键对值)

    空格!!!

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

    http的默认端口是80,https是443

    响应状态码:

    1xx :表示服务器已经成功接收到了数据正在处理,可以继续发送数据给服务端

    2xx:200 表示请求已经成功,并且已经将数据放回给客户端

    3xx:302 表示永久重定向 303表示暂时重定向

    4xx:404 表示请求失败,403表示禁止访问,权限不够

    5xx:500 表示服务端代码错误   502表示网关错误

    DNS(域名解析服务器,记录者域名与IP的对应关系)工作流程:

    pc端会将域名发送给本地DNs服务器,如果本地DNS没有会去找根DNS服务器,根DNS会将域名所在顶级服务器返回,并重新找顶级DNS服务器,一环一环下来,直到找到并返回数据,然后本地DNS服务器会将数据存在缓存并返回数据给客户端。

    DNS分级:

    13台根域名服务器(10台在美国,2台欧洲(1台英国,一台瑞典),一台日本)

    13台顶级DNS服务器(.com,.net,.org,.cn,.edu)

    权威域名服务器(baidu.com)

    二级域名服务器(www.baidu.com)

    动静态网页:

      静态网页:页面上的数据都是写死的,万年不变

      动态网页:页面上的数据是从后端动态获取的

      比如后端获取当前数据库数据然后传递给前端页面

    模板渲染:

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

      模板渲染 模板语法需要依赖于第三方模块

      pip install jinja2

      模板语法 jinjia2支持前端直接使用类似于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 %}

    什么是web框架?

    python主流的三大web框架:

      Django:大而全,里面有很多自带的模块(缺点:有点笨重)

      Flask:短小精悍,自带的模块非常少,主要依赖于第三方模块(小而轻)

      Tornado:异步非阻塞,主要用于处理高IO,多路复用的情况,可以写游戏后端

    自定义的web框架:

    a.socket服务端

    b.路由与视图函数

    c.将html代码和mysql的数据进行融合(自己定制规则,使用第三方工具)模板渲染

    按照上面的abc三大主流web框架的特点 是

    Django:

      a用的别人的 模块wsgiref

      b自己写的

      c自己写的

    Flask:

      a用别人的  werkzeug

      b自己写的

      c用的别人 的 jinjia2

    Tornado:

      abc都是自己写的

    注意事项:

      1.计算机的名称不能有中文

      2.一个parcharm窗口就是一个项目,不要多个项目放在一个窗口里面

      3.项目名不能起中文

    创建django:

    方式一(命令行创建):

      创建django项目

        django-admin startproject 项目名

      创建app应用

        python3 mange.py startapp app01

      启动django项目

        python3 mange.py runserver

      ps:用命令行创建django默认不会自动创建templates文件夹

      需要你手动自己创建(注意改文件夹路径是否被添加配置文件中

    方式2:(pycharm创建)

      FILE >>> new project 选择第二个django

      需要注意名字不能有中文,选择本地的解释器,勾选后台管理

      创建app

        pycharm命令行创建

          python3 mange.py startapp app01

        Tools 下面run mange task 功能栏

       启动点小绿色箭头

    强调:

    1.用django一定要保证只有一个在运行状态!!!!!

    2.一定记得清浏览器的缓存

    django创建完成后

      1.配置末班文件路径:'DIRS': [os.path.join(BASE_DIR, 'templates')]

      2.配置静态资源的文件路径:

                   STATIC_URL = '/static/'
                   STATICFILES_DIRS = (
                   os.path.join(BASE_DIR, 'static'), (逗号不能少)
                                      )

    注释中间件: 

    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',
    ]

    django小白必会三板斧
    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识别到你的代码变化之后会自动,但是有时候反应速度比较慢
    你可以手动重启,你也可以多刷新几次浏览器

        

     

      

    路由系统:

    [ ('/xxx',f1),('/bbb',f2),('/ggg',f3) ]

    里面的f1,f2,f3对应就是外面定义的函数

  • 相关阅读:
    OpenCV 3.4.0 + Visual Studio 2015开发环境的配置(Windows 10 X64)
    数值分析4
    数值分析3
    数值分析2
    数值分析1
    绪论0.4
    绪论0.3
    绪论0.2
    绪论0.1
    GitHub之起势
  • 原文地址:https://www.cnblogs.com/xinfan1/p/11159735.html
Copyright © 2020-2023  润新知