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/")
原文地址:https://www.cnblogs.com/samoo/p/11908151.html