Python Web开发(五):读取数据库数据

简介: Python Web开发(五):读取数据库数据

前言: 📢📢📢
🏅🏅🏅作者简介:是Dream呀,华为云享专家、CSDN原力计划作者、Python领域优质创作者,专注分享Python领域原创系列文章。
🌻🌻🌻热门专栏:【零基础学Python】
本课程是针对Python入门&进阶打造的一全套课程,在这里,我将会一 一更新Python基础语法、Python爬虫、Web开发、 Django框架、Flask框架以及人工智能相关知识,帮助你成为Python大神,如果你喜欢的话就抓紧收藏订阅起来吧~💘💘💘
🍋🍋🍋如果对学习没有自制力或者没有一起学习交流的动力,欢迎私信我或者文末添加vx,拉你进群,群内有行业大佬帮大家解答疑问,我们一起学习,群内定期还会有抽奖活动和红包相送嗷,快来进入我们吧~
💕 入门须知:这片乐园从不缺乏天才,努力才是你的最终入场券!🚀🚀🚀
💓最后,愿我们都能在看不到的地方闪闪发光,一起加油进步🍺🍺🍺

一、获取全部记录
1.1增加客户
现在我们来实现一个功能:浏览器访问 sales/customers/ ,我们的服务端就返回系统中所有的客户记录给浏览器。
首先我们增加两个客户:(这里看不懂的话,可以去看第四节)
此时就直接在我们的数据库管理中,出现了客户信息:

也可以直接通过数据库里面的添加功能,在数据库里面添加。

1.2获取所有表记录
我们先实现一个函数,来处理浏览器发出的URL为 sales/customers/ 的访问请求, 我们需要返回 数据库中 customer 表 所有记录。’
Django 中 对数据库表的操作, 应该都通过 Model对象 实现对数据的读写,而不是通过SQL语句。
比如,这里我们要获取 customer 表 所有记录, 该表是和我们前面定义的 Customer 类管理的。
我们可以这样获取所有的表记录。
在文件sales/views.py 中,定义一个listcustomers 函数,内容如下:

导入 Customer 对象定义

from common.models import Customer

def listcustomers(request):

# 返回一个 QuerySet 对象 ,包含所有的表记录
# 每条表记录都是是一个dict对象,
# key 是字段名,value 是 字段值
qs = Customer.objects.values()
# 定义返回字符串
retStr = ''
for customer in  qs:
    for name,value in customer.items():
        retStr += f'{name} : {value} | '

    # <br> 表示换行
    retStr += '<br>'
return HttpResponse(retStr)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Customer.objects.values() 就会返回一个 QuerySet 对象,这个对象是Django 定义的,在这里它包含所有的Customer 表记录。
QuerySet 对象 可以使用 for 循环遍历取出里面所有的元素。每个元素 对应 一条表记录。
每条表记录元素都是一个dict对象,其中 每个元素的 key 是表字段名,value 是 该记录的字段值
上面的代码就可以将 每条记录的信息存储到字符串中 返回给 前端浏览器。

1.3修改路由表
我们还需要修改路由表, 加上对 sales/customers/ url请求的 路由。
前面,我们在bysms\urls.py 主路由文件中,已经有如下的记录了:

# 凡是 url 以 sales/  开头的,
# 都根据 sales.urls 里面的 子路由表进行路由
path('sales/', include('sales.urls')),

1
2
3
这条URL记录,指明 凡是 url 以 sales/ 开头的,都根据 sales.urls 里面的 子路由表进行路由。我们只需修改 sales/urls.py 即可,添加如下记录:

path('customers/', views.listcustomers),
1

大家可以使用 admin 登录, 再添加一些 客户记录。
然后可以在浏览器输入如下 网址: http://127.0.0.1:8080/sales/customers/
回车后,浏览器显示结果类似如下:

和我们数据库中的记录信息一致。
此时我们通过F12进行抓包处理:

会发现此时的
就是我们的换行指令。

二、过滤条件
2.1 什么是过滤条件
有的时候,我们需要根据过滤条件查询部分客户信息。
比如,当用户在浏览器输入 /sales/customers/?phonenumber=13000000001 ,要求返回电话号码为 13000000001 客户记录。
我们可以通过 filter 方法加入过滤条件,修改view里面的代码,如下所示:

def listcustomers(request):

# 返回一个 QuerySet 对象 ,包含所有的表记录
qs = Customer.objects.values()

# 检查url中是否有参数phonenumber
ph =  request.GET.get('phonenumber',None)
# 如果有,添加过滤条件
if ph:
    qs = qs.filter(phonenumber=ph)

# 定义返回字符串
retStr = ''
for customer in  qs:
    for name,value in customer.items():
        retStr += f'{name} : {value} | '
    # <br> 表示换行
    retStr += '<br>'

return HttpResponse(retStr)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
与刚才不同的是,我们加入了一段过滤条件:

# 检查url中是否有参数phonenumber

ph =  request.GET.get('phonenumber',None)

# 如果有,添加过滤条件
if ph:
    qs = qs.filter(phonenumber=ph)

1
2
3
4
5
6
2.2过滤方法
看到函数定义的参数 request了:
Django 框架在 url 路由匹配到函数后, 调用函数时,会传入 一个 HttpRequest 对象给参数变量 request,该对象里面 包含了请求的数据信息。
HTTP 的 Get 请求url里面的参数(术语叫 querystring 里面的参数), 可以通过HttpRequest对象的 GET 属性获取。这是一个类似dict的对象。

比如要获取querystring里面的 phonenumber 参数 ,就可以像这样:

ph = request.GET.get('phonenumber',None)
1
第二个参数传入 None 表示,如果没有 phonenumber 参数在 querystring中 ,就会返回 None。
然后通过调用 QuerySet 对象的filter方法,就可以把查询过滤条件加上去:

qs = qs.filter(phonenumber=ph)
1
有了这个过滤条件,Django 会在底层执行数据库查询的SQL语句 加上相应的 where 从句,进行过滤查询。
注意,参数名 phonenumber 是和 定义的表 model 的属性名 phonenumber 一致的。
filter的过滤条件可以有多个,只要继续在后面的参数添加过滤条件即可。
比如:

qs = qs.filter(phonenumber=ph,address='山东日照')
1
这样就 除了 根据电话号码字段过滤,还有根据 地址字段过滤。

2.3有约束的url
现在在浏览器输入如下 url:

http://127.0.0.1:8080/sales/customers/?phonenumber=18300396393
1
访问结果如下:

可以发现过滤条件生效了。

目录
相关文章
|
1月前
|
数据采集 Web App开发 数据可视化
Python零基础爬取东方财富网股票行情数据指南
东方财富网数据稳定、反爬宽松,适合爬虫入门。本文详解使用Python抓取股票行情数据,涵盖请求发送、HTML解析、动态加载处理、代理IP切换及数据可视化,助你快速掌握金融数据爬取技能。
1030 1
|
1月前
|
算法 Java Go
【GoGin】(1)上手Go Gin 基于Go语言开发的Web框架,本文介绍了各种路由的配置信息;包含各场景下请求参数的基本传入接收
gin 框架中采用的路优酷是基于httprouter做的是一个高性能的 HTTP 请求路由器,适用于 Go 语言。它的设计目标是提供高效的路由匹配和低内存占用,特别适合需要高性能和简单路由的应用场景。
213 5
|
1月前
|
Java 数据挖掘 数据处理
(Pandas)Python做数据处理必选框架之一!(一):介绍Pandas中的两个数据结构;刨析Series:如何访问数据;数据去重、取众数、总和、标准差、方差、平均值等;判断缺失值、获取索引...
Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。 Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据源中导入数据,并对数据进行高效的操作和分析。 Pandas 主要引入了两种新的数据结构:Series 和 DataFrame。
349 0
|
1月前
|
JSON 算法 API
Python采集淘宝商品评论API接口及JSON数据返回全程指南
Python采集淘宝商品评论API接口及JSON数据返回全程指南
|
1月前
|
JSON API 数据安全/隐私保护
Python采集淘宝拍立淘按图搜索API接口及JSON数据返回全流程指南
通过以上流程,可实现淘宝拍立淘按图搜索的完整调用链路,并获取结构化的JSON商品数据,支撑电商比价、智能推荐等业务场景。
|
2月前
|
数据采集 关系型数据库 MySQL
python爬取数据存入数据库
Python爬虫结合Scrapy与SQLAlchemy,实现高效数据采集并存入MySQL/PostgreSQL/SQLite。通过ORM映射、连接池优化与批量提交,支持百万级数据高速写入,具备良好的可扩展性与稳定性。
|
5月前
|
缓存 JavaScript 前端开发
鸿蒙5开发宝藏案例分享---Web开发优化案例分享
本文深入解读鸿蒙官方文档中的 `ArkWeb` 性能优化技巧,从预启动进程到预渲染,涵盖预下载、预连接、预取POST等八大优化策略。通过代码示例详解如何提升Web页面加载速度,助你打造流畅的HarmonyOS应用体验。内容实用,按需选用,让H5页面快到飞起!
|
5月前
|
JavaScript 前端开发 API
鸿蒙5开发宝藏案例分享---Web加载时延优化解析
本文深入解析了鸿蒙开发中Web加载完成时延的优化技巧,结合官方案例与实际代码,助你提升性能。核心内容包括:使用DevEco Profiler和DevTools定位瓶颈、四大优化方向(资源合并、接口预取、图片懒加载、任务拆解)及高频手段总结。同时提供性能优化黄金准则,如首屏资源控制在300KB内、关键接口响应≤200ms等,帮助开发者实现丝般流畅体验。
|
前端开发 JavaScript Shell
鸿蒙5开发宝藏案例分享---Web页面内点击响应时延分析
本文为鸿蒙开发者整理了Web性能优化的实战案例解析,结合官方文档深度扩展。内容涵盖点击响应时延核心指标(≤100ms)、性能分析工具链(如DevTools时间线、ArkUI Trace抓取)以及高频优化场景,包括递归函数优化、网络请求阻塞解决方案和setTimeout滥用问题等。同时提供进阶技巧,如首帧加速、透明动画陷阱规避及Web组件初始化加速,并通过优化前后Trace对比展示成果。最后总结了快速定位问题的方法与开发建议,助力开发者提升Web应用性能。

热门文章

最新文章

推荐镜像

更多
下一篇
oss云网关配置