python读取数据库后生成网页,Python实战之数据库应用和数据获取

  python读取数据库后生成网页,Python实战之数据库应用和数据获取

  Yyds干货库存

  @TOC

  首先,获取所有记录

  1.1增加客户

  现在我们来实现一个功能:当浏览器访问sales/customers/,我们的服务器会将系统中所有的客户记录返回给浏览器。

  首先,我们添加两个客户:(如果你不明白这里,你可以去第4节)

  这时,客户信息直接出现在我们的数据库管理中:

  也可以通过数据库中的添加功能直接添加到数据库中。

  1.2获取所有表格记录

  首先,我们实现了一个函数来处理来自浏览器的、带有销售/客户URL的访问请求。我们需要返回数据库中customer表中的所有记录。

  Django中对数据库表的所有操作都应该通过模型对象读写数据,而不是通过SQL语句。

  例如,这里我们希望获得customer表的所有记录,该表是用我们前面定义的Customer类管理的。

  我们可以这样得到所有的表记录。

  在文件sales/views.py中,使用以下内容定义listcustomers函数:

  #导入客户对象定义

  从common.models导入客户

  定义客户列表(请求):

  #返回包含所有表记录的QuerySet对象。

  #每个表记录都是一个dict对象,

  # key是字段名称,value是字段值。

  qs=Customer.objects.values()

  #定义返回字符串

  retStr=

  对于qs中的客户:

  对于名称,customer.items()中的值:

  retStr=f“{ name }:{ value }

  # br表示换行。

  retStr= br

  返回http响应(retStr)

  Customer.objects.values()将返回一个由Django定义的QuerySet对象,其中包含所有的客户表记录。

  QuerySet对象可以使用for循环遍历来获取其中的所有元素。每个元素对应于一个表记录。

  每个表记录元素是一个dict对象,其中每个元素的键是表字段名,值是记录的字段值。

  上面的代码可以将每条记录的信息存储到一个字符串中,并返回给前端浏览器。

  1.3修改路由表

  我们还需要修改路由表,并将路由添加到销售/客户/url请求中。

  之前,我们在主路由文件bysms\urls.py中有以下记录:

  #其中url以sales/开头,

  #根据sales.urls中的子路由表进行路由

  path(sales/),include(sales.urls ),

  这个URL记录表示所有以sales/开头的URL都是根据sales.urls中的子路由表进行路由的我们只需要修改sales/urls.py并添加以下记录:

  path(customers/,views.listcustomers),

  您可以使用admin登录并添加一些客户记录。

  然后可以在浏览器中输入以下网址:http://127 . 0 . 0 . 1:8080/sales/customers/

  输入后,浏览器显示类似如下的结果:

  这与我们数据库中记录的信息一致。

  此时,我们通过F12抓取数据包:

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

  二、过滤条件

  2.1什么是过滤条件?

  有时候,我们需要根据过滤条件查询一些客户信息。

  例如,当用户输入/销售/客户/?电话号码=1300000001,需要返回电话号码=13000000001客户记录。

  我们可以通过filter方法添加过滤条件,并修改视图中的代码,如下所示:

  定义客户列表(请求):

  #返回包含所有表记录的QuerySet对象。

  qs=Customer.objects.values()

  #检查url中是否有参数phonenumber

  ph=请求。GET.get(电话号码,无)

  #如果是,添加过滤条件。

  如果ph值:

  qs=qs.filter(phonenumber=ph)

  #定义返回字符串

  retStr=

  对于qs中的客户:

  对于名称,customer.items()中的值:

  retStr=f“{ name }:{ value }

  # br表示换行。

  retStr= br

  返回http响应(retStr)

  与刚才不同的是,我们增加了一个过滤条件:

  #检查url中是否有参数phonenumber

  ph=请求。GET.get(电话号码,无)

  #如果是,添加过滤条件。

  如果ph值:

  qs=qs.filter(phonenumber=ph)

  2.2过滤方法

  参见由函数定义的参数请求:

  当Django框架在url路由与函数匹配后调用函数时,它会向参数变量request传入一个Httprequest对象,该对象包含所请求的数据信息。

  HTTP Get请求url中的参数(术语是querystring中的参数)可以通过HttpRequest对象的Get属性获得。这是一个类似字典的物体。

  例如,要获取querystring中的phonenumber参数,可以如下所示:

  ph=请求。GET.get(电话号码,无)

  传递给None的第二个参数指示如果querystring中没有phonenumber参数,则不会返回任何参数。

  然后,通过调用QuerySet对象的filter方法,可以添加查询筛选条件:

  qs=qs.filter(phonenumber=ph)

  有了这个过滤条件,Django将通过在底层执行数据库查询的SQL语句中添加相应的where子句来过滤查询。

  注意,参数名phonenumber与定义的表模型的属性名phonenumber是一致的。

  可以有多个过滤条件的过滤器,只要你在下面的参数中继续添加过滤条件。

  例如:

  QS=QS.filter(电话号码=pH,地址=山东日照)

  这样,您可以根据地址字段和电话号码字段进行筛选。

  2.3带约束的url

  现在,在浏览器中输入以下url:

  http://127 . 0 . 0 . 1:8080/销售/客户/?电话号码=18300396393

  这次访问的结果如下:

  您可以看到过滤条件已经生效。

  来自博客作者为梦想原创作品。转载请联系作者取得授权,否则将追究法律责任。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • 关系型数据库与非关系型数据库简介一样吗,关系型数据库非关系型数据库有哪些
  • 关系型数据库与非关系型数据库简介一样吗,关系型数据库非关系型数据库有哪些,关系型数据库与非关系型数据库简介
  • 关于redis数据库入门详细介绍图片,redis数据库的使用,关于Redis数据库入门详细介绍
  • 使用php连接mysql数据库,php连接数据库的方法
  • 使用php连接mysql数据库,php连接数据库的方法,一文详解PHP连接MySQL数据库的三种方式
  • 什么是分库分表,为什么要进行分库分表-,分库分表的区别,数据库分库分表是什么,什么情况下需要用分库分表
  • vb中adodb连接数据库,
  • treeview控件绑定数据,wpf treeview数据绑定,详解TreeView绑定数据库
  • sql的多表查询,数据库如何实现多表查询
  • SQL数据库的图形管理界面工具是,sql图形界面创建数据库
  • SQL数据库的图形管理界面工具是,sql图形界面创建数据库,SQLServer2019 数据库的基本使用之图形化界面操作的实现
  • sql数据库定时备份怎么弄,mysql 定期备份
  • sql数据库定时备份怎么弄,mysql 定期备份,MySQL 数据库定时备份的几种方式(全面)
  • sqlserver的nvarchar和varchar,数据库varchar和nvarchar
  • sqlserver的nvarchar和varchar,数据库varchar和nvarchar,SQL中varchar和nvarchar的基本介绍及其区别
  • 留言与评论(共有 条评论)
       
    验证码: