Django框架-01HTTP协议+Django简介

HTTP协议

超文本传输协议

  • 规定了客户端与服务端消息传输的格式

四大特性

  • 1.基于TCP/IP协议作用于应用层的协议
  • 2.基于请求响应
  • 3.无状态
  • 4.无连接

数据格式之请求

  • 请求首行
  • 请求头(一堆k,v键值对)
  • \r\n\r\n
  • 请求体(post请求携带的数据)

数据格式之响应:

  • 响应首行
  • 响应头(一堆k,v键值对)
  • \r\n\r\n
  • 响应体(post请求携带的数据)

响应状态码

  • 1XX 服务器已经成功接受到你的数据正在处理,你可以继续提交其他数据
  • 2XX 请求成功 服务器已经将你请求的数据发送给你了(200请求访问成功)
  • 3XX 重定向(301, 302)
  • 4XX 请求资源不存在(403权限不够,404无访问资源)
  • 5XX 服务器错误(500服务器错误)

动静态网页

静态网页:

    页面上的数据都是写死的,万年不变

动态网页:

    页面上的数据是从后端动态获取的
    比如后端获取当前时间
    后端获取数据库数据然后传递给前端页面

模版渲染

什么是模版渲染

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

jinjia2

  • 支持前端直接使用类似于python的语法操作数据
  • {{ user_dic }}

    {{ user_dic.name }}

    {{ user_dic['password'] }}

    {{ user_dic.get('name') }}

  • {% for user in user_dict %}

    {{ user.id }}
    {{ user.name }}
    {{ user.password }}

    {% endfor %}

python三大主流web框架

Django:大而全,自带了很多功能模块,类似于航空母舰 (缺点:有点笨重)

Flask:短小精悍,自带的功能模块特别少,大部分都是依赖于第三方模块(小而轻)

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

三者区别

  • a:socket
  • b:路由与视图函数
  • c:模板渲染

Django:
a用的别人的 wsgiref
b自己写的
c自己写的
Flask:
a用的别人的 werkzeug
b自己写的
c用的别人的 jinja2
Tornado:
a,b,c都是自己写的

django项目注意点

  1. 计算机的名称不能有中文
  2. 一个pycharm窗口就是一个项目,不要多个项目放在一个窗口里面
  3. 项目名不能起中文

注意新创建的app需要在配置文件中注册才能生效

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app01.apps.App01Config'  # 可以用全称
    'app01'                  # 也可以简写
]

创建django项目

命令行创建

  • 创建django项目

  • django-admin startproject 项目名

  • 创建app应用
    python3 manage.py startapp app01

  • 启动django项目
    python3 manage.py runserver

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

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

pycharm创建

  • FILE >>> new project 选择第二个django 需要注意名字不能有中文,选择本地的解释器,勾选后台管理
  • 创建app(也可以在创建django项目的时候在app地方输入名字,那么会自动创建)
  • pycharm命令行创建
  • python3 manage.py startapp app01
  • Tools下面run manage task功能栏
  • 启动点小绿色箭头
    强调:
    1.用django一定要保证只有一个在运行状态 切记切记!!!!!!!
    2.一定记得清浏览器的缓存

各文件的作用

应用名

migrations  数据库迁移记录相关数据
admin.py    django后台管理相关
models.py   模型表相关
views.py    视图函数相关

项目名

settings.py  配置文件
urls.py     路由与视图函数的映射关系

templates

项目用到的所有的html文件

manage.py

django入口文件

django三板斧

ps: 所有请求都会返回一个HttpResponse是对的! 本质 render, redirect源码里面返回的都是HttpResponse,

比如

render: HttpResponse(content, content_type, status)

redirect:

def redirect(to, *args, **kwargs):
    if kwargs.pop('permanent', False):
        redirect_class = HttpResponsePermanentRedirect
    else:
        redirect_class = HttpResponseRedirect
    return redirect_class(resolve_url(to, *args, **kwargs))

from django.shortcuts import render, HttpResponse, redirect

HttpResponse 返回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 重定向

转载于:https://www.cnblogs.com/suren-apan/p/11567545.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值