Django-视图

如需了完整内容请访问:https://www.emperinter.info/2022/05/31/django-view/

视图

概述

  • 作用:
    • 视图接受web请求,并响应Web请求
  • 本质:
    • 视图就是 一个Python中的函数
  • 响应内容:
    • 网页
      • 重定向
      • 错误视图
        • 404:url找不到
        • 500: 服务器内部错误
    • JSON数据

URL 配置

配置流程

  • settings.py中指定根级URL配置文件:ROOT_URLCONF = 'project.urls',默认实现了。
  • urlpatterns:
    • 一个url实例的对象
    • url对象
      • 正则表达式
      • 视图名称
      • 名称(用来反向解析的)
  • url匹配正则的注意事项:
    • 如果想要从url中获取一个值,需要对正则加小括号
    • 匹配正确,前方不需要加小斜杠/,一般在最后加
    • 正则前需要加r表示字符串转义

引入其它url配置

  • 一般在应用中创建urls.py文件,定义本应用的url配置,在工程urls.py文件中使用include()方法: url(r'^', include('myApp.urls',namespace='myApp')),

匹配过程

  • 工程url->应用url->视图

URL的反向解析(代理):

  • 概述
    • 如果在视图/模板中使用了硬编码的连接,在url配置发生改变时,动态生成链接的地址。
  • 解决思路
    • 在使用链接时,通过url配置的名称,动态生成url地址。
  • 作用
    • 使用url模板的时候

视图函数

定义视图:

  • 本质:一个函数
  • 视图参数:
    • request 一个HttpRequest的实例
    • 通过url正则表达式获取的参数
  • 位置:
    • 一般在views.py中定义

错误视图

  • 404视图
    • 找不到网页(url匹配不成功)时返回。
    • 可以自己定义。
      • templates下定义404.html
        • request_path:导致出错的网址。
      • 配置settings.py
        • DEBUG 如果为True 永远会调用404.html页面
        • ALLOWED_HOSTS = [*]
  • 500视图
    • 在视图代码中出现错误(服务器代码)。
  • 400视图
    • 错误是客户的操作。

HttpRequest对象

概念

  • 接收HTTP请求后,会根据报文创建HttpRequest对象
  • 视图的第一个参数就是HttpRequest对象
  • Djano对象创建的,之后调用试图传递给视图

属性

  • path
    • 请求的完整路径(不包括域名和端口)
  • method
    • 表示请求的方式,常用的有GET、POST
  • encoding
    • 表示浏览器提交的数据的编码方式,一般为utf-8
  • GET
    • 类似字典的对象,包含了get请求的所有参数
  • POST
    • 类似字典的对象,包含了post请求的所有参数
  • FILES
    • 类似字典的对象,包含了所有上传的文件。
  • COOKIES
    • 字典,包含所有的cookie
  • session
    • 类似字典的对象,表示当前会话

方法

  • is_ajax()
    • 如果是XMLHttpRequest发起的,返回True

QueryDict对象

  • request对象中的GET、POST对象都属于QueryDict对象
  • 方法
    • get()
      • 作用:根据键获取值
      • 只能获取一个值
      • www.baidu.com/abc?a=1&b=2&c=3
    • getlist()
      • 将键的值以列表形式返回
      • 可以获取多个值
      • www.baidu.com/abc?a=1&a=2&c=3 (注意有两个a)

GET属性

# 获取get传递的数据  
def get1(request):  
    a = request.GET.get("a")  
    b = request.GET["b"]  
    c = request.GET.get("c")  
    return  HttpResponse(a + " " + b + " " + c)  
  
def get2(request):  
    a = request.GET.getlist('a')  
    a1 = a[0]  
    a2 = a[1]  
    b = request.GET.get('c')  
    return HttpResponse(a1 + " " + a2 + " " + b)

POST属性

  • 使用表单模拟提交post请求
  • 关闭CSRF:
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',  
]
  • test case
def showregister(request):  
    name = request.POST.get("username")  
    gender = request.POST.get("gender")  
    age = request.POST.get("age")  
    hobby = request.POST.getlist("hobby") # checkbox  
  
    info = str("name:\t" + name + "\tgender:" +gender + "\tage:" + age + "\thobby"+ str(hobby))  
    print(info)  
  
    return  HttpResponse(info)

HttpResponse对象

如需了解更多请访问:https://www.emperinter.info/2022/05/31/django-view/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值