zoukankan      html  css  js  c++  java
  • Django 49

    Django (一)

    Django关联知识点梳理

    BS架构

    149-网络架构及其演变过程-bs架构.jpg?x-oss-process=style/watermark

    HTTP协议

    超文本传输协议:是一种用于分布式、协作式和超媒体信息系统的应用层协议。

    HTTP四大特性:

    ​ 1.基于TCP/IP作用于应用层之上的协议

    ​ 2.基于请求响应

    ​ 3.无状态
    ​ cookie session token...
    ​ 4.无连接
    ​ websocket (互联网套接字) 相当于是HTTP协议的一个大的补丁,他支持长连接

    数据格式

    #请求格式
    请求首行(标识HTTP协议版本,当前请求方式)
    请求头(一大堆k,v键值对)
    
    
    请求体(携带一些敏感信息 比如:密码,身份证号...)
    

    响应状态码

    ​ 它的本质是:用数字表示一串语言解释

    1XX:服务端已经成功接收了你的数据正在处理,你可以继续提交额外的数据
    2XX:服务端成功响应 你想要的数据(请求成功200)
    3XX:重定向(当你在访问一个需要登陆之后才能访问的页面 你会发现窗口会自动调整到登录页面 301,302)
    4XX:请求错误(请求资源不存在404,请求不合法不符合内部规定会权限不够 403)
    5XX:服务器内部错误(500)
    

    三大主流框架

    django 大而全 自带的组件和功能非常非常多 类似于航空母舰
    不足之处:写小项目的时候 可能会比较笨重(大材小用)

    flask 小而精 短小精悍 自带的组件和功能特别特别少 类似于游骑兵
    基本全部依赖于第三方组件
    不足之处:受限于第三方模块的影响比较大
    如果将flask所有第三方模块加起来 能够直接盖过django

    tornado 异步非阻塞 这个框架甚至可以用来开发游戏服务器

    a:socket部分
    b:路由匹配
    c:模板语法
    
    django:
        a用的别人的wsgiref(django默认的)
        b自己写的
        c自己写的
    flask:
        a用的别人的werkzeug
        b自己写的
        c用的别人的jinja2
    Tornado:
        a,b,c都是自己写的
    

    wsgiref

    利用wsgiref模块来替换我们自己写的web框架的socket server部分

    def run_server(environ, start_response):
        start_response('200 OK', [('Content-Type', 'text/html;charset=utf8'), ])  # 设置HTTP响应的状态码和头信息
        url = environ['PATH_INFO']  # 取到用户输入的url
        func = None
        for i in list1:
            if i[0] == url:
                func = i[1]
                break
        if func:
            response = func(url)
        else:
            response = b"404 not found!"
        return [response, ]
    
    if __name__ == '__main__':
        httpd = make_server('127.0.0.1', 8090, run_server)
        print("我在8090等你哦...")
        httpd.serve_forever()
    

    jinja2模板语法

    专门用来处理后端数据与html页面的交互

    能够在html页面上 也能够用后端python语法来操作后端传递过来的数据
    {% for user_dic in user_list %}
    	<tr>
    		<td>{{ user_dic.id }}</td>
    		<td>{{ user_dic.username }}</td>
    		<td>{{ user_dic.password }}</td>
    	</tr>
    {% endfor %}
    

    Django

    django框架介绍

    安装前注意事项:

    1.计算机名称不能有中文
    2.python解释器不要使用3.7版本  推荐使用版本3.4~3.6
    3.一个pycharm窗口 只能跑一个项目
    
    django版本以1.11.11为主(1.11.9~1.11.13)
    

    检验django是否安装成功:

    命令行敲 django-admin

    命令行创建项目:

    1.创建django项目
        django-admin startproject 项目名(例如mysite)
    2.启动django项目
        切换到项目文件夹下
        python3 manage.py runserver 
        python3 manage.py runserver 127.0.0.1:8080
    3.创建应用(django支持多app开发)
        python3 manage.py startapp app01
        
       	注意:
            1.不会自动帮你创建templates文件夹
    		2.配置文件中不会自动帮你书写templates文件路径
    

    目录介绍:

    mysite/
    ├── manage.py  # 管理文件
    └── mysite  # 项目目录
        ├── __init__.py
        ├── settings.py  # 配置
        ├── urls.py  # 路由 --> URL和函数的对应关系
        └── wsgi.py  # runserver命令就使用wsgiref模块做简单的web server
    

    app概念

    django是一个以开发app为主要功能的web框架
    app就是application应用的意思
    
    一个django项目就是一所大学(空的架子 本身没有任何功能)
    而app就类似于大学里面的各个学院
    
    一个空的django本身没有任何作用 仅仅是为app提高前期的环境配置
    
    你可以根据功能的不同 开发多个app
    一个app对应一个具体的功能模块
        用户相关的功能  用户相关的app
        订单相关的功能  订单相关的app
        商品相关的功能  商品相关的app
    每一个app都有自己独立的功能
    

    APP注册

    #创建好的app需要在django配置文件中注册方可生效
    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        # 'app01'  # 简便写法
        'app01.apps.App01Config'  # 最完整的写法
    ]
    
    

    pycharm创建项目

    1.创建应用的时候 可以使用简便方式
        Tools >>> run manage.py task
        
    2.一定要确保同一个端口 同一时间只能启一个django项目
    
    
    3.配置文件中针对templates文件夹的路径 如果是空的需要你手动配置
        TEMPLATES = [
            {
                'BACKEND': 'django.template.backends.django.DjangoTemplates',
                'DIRS': [os.path.join(BASE_DIR, 'templates')]
                ,
                'APP_DIRS': True,
                'OPTIONS': {
                    'context_processors': [
                        'django.template.context_processors.debug',
                        'django.template.context_processors.request',
                        'django.contrib.auth.context_processors.auth',
                        'django.contrib.messages.context_processors.messages',
                    ],
                },
            },
        ]
    

    django文件功能

    django项目名
        项目同名的文件夹
            settings.py  暴露给用户可以配置的配置文件
            urls.py      路由与视图函数对应关系
        manage.py        django的入口文件
        应用名文件夹
            migrations文件夹     所有数据库相关的操作记录
            admin.py             django admin后台管理
            apps.py              注册app使用
            models.py            放所有数据库相关的模型类
            tests.py			 测试文件
            views.py             处理业务逻辑的视图函数
    
    

    Django基础必备三

    HttpResponse

    内部传入一个字符串参数,返回给浏览器

    def index(request):
        # 业务逻辑代码
        return HttpResponse("OK")
    

    render

    除request参数外还要传入一个HTML文件的名字和一个保存具体数据的字典参数。

    ​ 返回html文件,可以给html页面传值

    def login(request):
        user_dic = {'username':'jason','password':'123'}
        return render(request,'login.html',{'xxx':user_dic})
    

    redirect

    接受一个URL参数,表示跳转到指定的URL。(重定向)

    def index(request):
        # 业务逻辑代码
        return redirect("/home/")
    
  • 相关阅读:
    jQuery 简单滑动轮播图效果
    西工大:同学你好,回来挂科!
    【入门】产品经理零基础怎么入门?
    【考点】 HashMap,HashTable,CurrentHashMap,LinkedHashMap,TreeMap简述
    P图鬼才们集体上线!高校毕业照P图哪家强?
    【实战】怎样实现前端裁剪上传图片功能
    校招选产品经理岗?给你浇盆水
    战胜70%对手的校招开发岗简历是这个样子的
    两个人遇到熊,装死的和转身跑的,哪个能活下来
    第一份实习工作,我应该学到什么?
  • 原文地址:https://www.cnblogs.com/samoo/p/11908151.html
Copyright © 2011-2022 走看看