5.8Django网络框架(8):视图案例

2024-05-27 01:18

本文主要是介绍5.8Django网络框架(8):视图案例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

@路径参数

  • 定义路由表
# 响应函数按顺序接收路由参数
url(r'^patharg/(\d+)/', views.pathArg,name='pafunc'),# 路由定义中明确声明了由响应函数的哪个参数进行接收
url(r'^showdate/(?P<year>\d+)/(?P<month>\d+)/(?P<date>\d+)/', views.showDate,name='datefunc'),
  • 定义响应函数
# 按顺序从路由中获取路径参数
def pathArg(request, arg):return HttpResponse('hello:' + arg)# 按指定的名称从路由中获取路径参数
def showDate(request, month, date, year):return HttpResponse('%s年%s月%s日' % (year, month, date))

@常规路由和反向解析
- 定义路由表

# 去到带有多个超链接的页面
url(r'^links/', views.showLinksPage),
  • 定义响应函数
# links.html中演示常规的超链接和反向解析的超链接格式
def showLinksPage(request):return render(request, 'links.html')
  • links.html
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
im links.html from app templates
<ul>{# 常规路由 #}<li><a href='/app/patharg/456/'>查看路径参数1</a></li>{# 反向解析路由:appns=路由表名称,pafunc=响应函数名称,456=响应函数参数 #}<li><a href="{% url 'appns:pafunc' 456 %}">查看路径参数2</a></li>{# 常规路由 #}<li><a href='/app/showdate/2048/5/20/'>查看年月日1</a></li>{# 反向解析路由:appns=路由表名称,datefunc=响应函数名称,响应函数参数以关键字参数形式定义 year=2048 month=5 date=20 #}<li><a href="{% url 'appns:datefunc' year=2048 month=5 date=20 %}">查看年月日2</a></li>
</ul>
</body>
</html>

@请求重定向
- 定义路由表

# 该路由会被重定向
url(r'^redirect/', views.useRedirect),
  • 定义响应函数
# 重定向请求
def useRedirect(request):# 使用常规路由# return HttpResponseRedirect('/app/patharg/456/')# return HttpResponseRedirect('/app/showdate/2048/5/20/')# 使用反向解析路由# return HttpResponseRedirect(reverse('appns:pafunc',args=('456',)))return HttpResponseRedirect(reverse('appns:datefunc', kwargs={'year': '2048', 'month': '5', 'date': '20'}))

@返回JSON形式的数据

  • 定义路由表
#获得JSON格式而非HTML形式的数据返回
url(r'^getjson/', views.getJson,name='getjson'),
  • 定义响应函数
# 向客户端返回JSON数据
def getJson(request):return JsonResponse({'status': 200,'msg': 'request ok!','data': {'name': '比尔大门', 'hobbies': ['coding', 'reading']}})

@查看请求元信息

  • 定义路由表
# 查看请求元信息
url(r'^seerequestmeta/', views.seeRequestMeta),
  • 定义响应函数
# 查看客户端META信息
def seeRequestMeta(request):# 获取元信息对象reqMeta = request.META# 将元信息对象重构为一个标准字典data = {}for name in reqMeta:# print(name,'=',reqMeta[name])data[name] = reqMeta[name]# 交给页面进行渲染return render(request, 'request_info.html', context={'reqMeta': data})
  • 定义页面
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>请求信息</title>
</head>
<body>
<ul>
{# 遍历字典进行数据展示 #}
{% for k,v in reqMeta.items %}<li>{{ k }}={{ v }}</li>
{% endfor %}
</ul>
</body>
</html>

@请求对象和响应对象的常用API

  • 定义路由表
# 查看请求和响应的常用API
url(r'^reqandresp/', views.requestAndResponse, name='knowrequest'),
  • 定义响应函数
# request和response对象常用API
def requestAndResponse(request):# 请求路径print('request.path =', request.path)# 请求方法print('request.method =', request.method)# GET请求携带的数据print('request.GET =', request.GET)print('request.GET.get("name","游客") =', request.GET.get("name", "游客"))print('request.GET.getlist("name") =', request.GET.getlist('name'))# print('request.GET["name"] =',request.GET["name"])# POST请求携带的数据print('request.POST =', request.POST)# 创建响应对象response = HttpResponse()# 设置响应内容response.content = 'im content'# 设置网络状态码(这里是随意设置的,实际开发中应按照HTTP协议进行设置)response.status_code = 404# 追加响应内容response.write('request.path =' + request.path + ';\r\n')response.write('request.method =' + request.method + ';\r\n')response.write('request.GET =' + str(request.GET) + ';\r\n')response.write('request.GET.get("name","游客") =' + request.GET.get("name", "游客") + ';\r\n')response.write('request.GET.getlist("name") =' + str(request.GET.getlist('name')) + ';\r\n')response.write('request.POST =' + str([k + "=" + v for k, v in request.POST.items()]) + ';\r\n')# 清空响应内容# response.flush()# 返回响应return response
  • 发起请求
http://127.0.0.1:8000/app/reqandresp/?name=bill&age=70

输出效果如图
这里写图片描述
这里写图片描述

@提交表单

  • 定义路由表
# 提交表单
url(r'^postform/', views.postForm,name='postform'),
  • 定义响应函数
# 提交表单
def postForm(request):return render(request, 'post_form.html')
  • 页面定义
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Form</title>
</head>
<body>{# 表单被提交到appns路由表下的knowrequest函数进行响应,方法为POST #}
<form action="{% url 'appns:knowrequest' %}" method="post">{# 提交表单必须的安全措施 #}{% csrf_token %}{# 用户输入将以name参数提交 #}<input type="text" name="name" placeholder="请输入用户名"><br>{# 用户输入将以password参数提交 #}<input type="password" name="password" placeholder="请输入你的银行卡密码"><br>{# 提交按钮 #}<input type="submit">
</form></body>
</html>

执行效果
这里写图片描述
这里写图片描述

这篇关于5.8Django网络框架(8):视图案例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1006123

相关文章

Python通用唯一标识符模块uuid使用案例详解

《Python通用唯一标识符模块uuid使用案例详解》Pythonuuid模块用于生成128位全局唯一标识符,支持UUID1-5版本,适用于分布式系统、数据库主键等场景,需注意隐私、碰撞概率及存储优... 目录简介核心功能1. UUID版本2. UUID属性3. 命名空间使用场景1. 生成唯一标识符2. 数

PostgreSQL的扩展dict_int应用案例解析

《PostgreSQL的扩展dict_int应用案例解析》dict_int扩展为PostgreSQL提供了专业的整数文本处理能力,特别适合需要精确处理数字内容的搜索场景,本文给大家介绍PostgreS... 目录PostgreSQL的扩展dict_int一、扩展概述二、核心功能三、安装与启用四、字典配置方法

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

Python中re模块结合正则表达式的实际应用案例

《Python中re模块结合正则表达式的实际应用案例》Python中的re模块是用于处理正则表达式的强大工具,正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式,这篇文章主... 目录前言re模块常用函数一、查看文本中是否包含 A 或 B 字符串二、替换多个关键词为统一格式三、提

Spring 框架之Springfox使用详解

《Spring框架之Springfox使用详解》Springfox是Spring框架的API文档工具,集成Swagger规范,自动生成文档并支持多语言/版本,模块化设计便于扩展,但存在版本兼容性、性... 目录核心功能工作原理模块化设计使用示例注意事项优缺点优点缺点总结适用场景建议总结Springfox 是

Python get()函数用法案例详解

《Pythonget()函数用法案例详解》在Python中,get()是字典(dict)类型的内置方法,用于安全地获取字典中指定键对应的值,它的核心作用是避免因访问不存在的键而引发KeyError错... 目录简介基本语法一、用法二、案例:安全访问未知键三、案例:配置参数默认值简介python是一种高级编

MySQL中的索引结构和分类实战案例详解

《MySQL中的索引结构和分类实战案例详解》本文详解MySQL索引结构与分类,涵盖B树、B+树、哈希及全文索引,分析其原理与优劣势,并结合实战案例探讨创建、管理及优化技巧,助力提升查询性能,感兴趣的朋... 目录一、索引概述1.1 索引的定义与作用1.2 索引的基本原理二、索引结构详解2.1 B树索引2.2

从入门到精通MySQL 数据库索引(实战案例)

《从入门到精通MySQL数据库索引(实战案例)》索引是数据库的目录,提升查询速度,主要类型包括BTree、Hash、全文、空间索引,需根据场景选择,建议用于高频查询、关联字段、排序等,避免重复率高或... 目录一、索引是什么?能干嘛?核心作用:二、索引的 4 种主要类型(附通俗例子)1. BTree 索引(

HTML中meta标签的常见使用案例(示例详解)

《HTML中meta标签的常见使用案例(示例详解)》HTMLmeta标签用于提供文档元数据,涵盖字符编码、SEO优化、社交媒体集成、移动设备适配、浏览器控制及安全隐私设置,优化页面显示与搜索引擎索引... 目录html中meta标签的常见使用案例一、基础功能二、搜索引擎优化(seo)三、社交媒体集成四、移动

Python的端到端测试框架SeleniumBase使用解读

《Python的端到端测试框架SeleniumBase使用解读》:本文主要介绍Python的端到端测试框架SeleniumBase使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录SeleniumBase详细介绍及用法指南什么是 SeleniumBase?SeleniumBase