python编程从入门到实践答案,python编程从入门到实践课后题答案第五章

  python编程从入门到实践答案,python编程从入门到实践课后题答案第五章

  Yyds干货库存

  一、要实现的目标我们的目标是实现一个公司的销售管理系统。

  在以后的课程中,我会一步一步的带领你完成这个销售管理系统。

  其次,创建项目app1。app简介Django中的APP是指项目中的一个应用。一个项目包含多个应用程序。一个app通常是一个相对独立的模块,实现相对独立的功能。

  比如我们可以在一个名为mgr的app中管理这个系统的管理员的功能,在另一个名为sales的app中实现销售人员的操作。

  一个app本质上就是一个Python包,里面包含了一些应用相关的代码文件。当然,一个项目分成多少个app,完全取决于你的设计。也可以把自己所有的功能放到一个大app里实现功能。就这样做,这个app就显得特别臃肿。

  2.在Django创建一个应用程序。您可以通过执行命令来创建应用程序目录,并自动在其中创建应用程序常用的文件。比如现在我们需要一个app来处理百越医疗系统中销售人员的添加、修改、查询、删除等请求。

  我们将进入项目的根目录,并执行以下命令。

  Python manage.py startapp sales首先找到我们的文件,然后右键进入终端:

  然后在我们的终端输入我们的命令:python manage.py startapp sales:

  这样,我们会发现我们新创建的应用程序出现在我们的目录中:

  这将创建一个名为sales的目录,对应于一个名为sales的应用程序,它包含以下自动生成的文件。

  Sales/_ _ init _ _。pyadmin.pyapps.pymigrations/_ _ init _ _。pymodels.pytests.pyviews.py这个目录实际上是一个包含许多文件的python包。我们稍后将讨论它们的功能。

  3.将页面内容返回给浏览器。在浏览器地址栏输入网址时,服务器如何让浏览器呈现页面内容?

  是这样的:当我们输入一个网址,比如百度的网址,然后回车,浏览器会向百度的服务器发送一个http请求,百度的服务器会将HTML文档内容返回给浏览器。浏览器解析后,会呈现我们最终看到的网页内容。

  服务器返回的HTML文档的内容实际上是一个符合HTML语法的字符串。

  现在我们用Django开发后端服务,这样就可以响应浏览器的http请求,返回一个HTML字符串,浏览器就可以呈现在界面上了。我们刚刚创建的销售应用程序中有一个views.py文件。在这个文件中,通常会编写处理http请求的代码。

  比如我们设计浏览器访问的http请求的url地址是/sales/orders/,由views.py中的函数listorders处理,向浏览器返回一个字符串。

  我们打开views.py并向其中添加以下内容:

  从django.http导入httpresponse def list orders(request):返回httpresponse(这里是系统中所有的订单信息。)

  最终返回的结果是HttpResponse对象的参数字符串,就是这句话。

  以下是系统中的所有订单信息。listorders的参数request是Django中的一个HttpRequest对象,它包含HTTP请求中的信息。

  后端程序往往会根据请求中的数据来处理请求:比如请求添加一个用户,要添加的用户的信息(姓名、登录账号等。)将被携带在HTTP请求消息中。我们编写后端代码,这些信息在HttpRequest对象中获得。所以这个参数很重要。

  仅仅定义这样一个函数是不够的。我们需要告诉姜戈:

  当前客户端发送的HTTP请求的url地址是/sales/orders/,由views.py中的函数listorders处理

  如何告诉Django?

  这是Django中的url路由设置。

  四。url路由1。添加路由记录。创建项目目录时,项目的设置目录下有一个如下的urls.py文件:

  该文件是url路由设置的入口文件。

  打开文件,在urlpatterns列表变量中添加一个路由信息,结果如下

  from django . contrib import admin from Django . urls导入路径#不要忘记从sales.views导入listorders函数listordersurlpatterns=[PATH( admin/,Admin.site.urls),#添加以下路由记录路径( sales/orders/,list orders),] url模式列表是Django的URL路由的入口。

  里面是我们添加的所有路由记录:

  Path (sales/orders/,listorders)是告诉当前请求url地址是/sales/orders/(注意:最后一个斜杠不能省略),由views.py中的函数listorders处理

  所以所谓路由就是:根据一个HTTP请求的url路径,设置哪个函数来处理这个请求。

  1.1解决错误:找不到符合要求的版本XXX当我们将上述代码放入url文件时,我们没有导入销售库:

  此时,当我们按照常识在终端中pip安装销售时,就会出现错误的问题:找不到符合XXX要求的版本。

  这个问题往往会让我们认为下载的安装包之间有冲突,所以需要花费大量的时间来配置各种环境。

  其实这个问题的原因是python国内网络不稳定,直接导致报错。所以我们经常用镜像源来解决这个问题。如下所示:

  皮普安装包名——我http://pypi.douban.com/simple/-trusted-host pypi.douban.com即:

  皮普安装销售-我http://pypi.douban.com/simple/-信任-主机pypi.douban.com

  1.2启动web服务这个地方需要我们启动web服务来达到这个效果:

  如果你对这个地方不太了解,可以看看本专栏的第二课:Python Web开发II:Django的安装和运行

  此时,我们可以登录浏览器,输入网址http://127 . 0 . 0 . 1:8080/sales/orders/(注意:最后一个斜杠不能省略)

  进入后,会出现以下内容:

  也就是浏览器的请求被Django路由后,选择执行我们定义的函数listorders。该函数返回的字符串作为http响应的消息体内容返回给浏览器。

  所以浏览器最终显示的是我们的listorders函数返回的字符串。

  注意:

  你只要修改路由表配置,添加我们自己的路由记录,然后在浏览器里访问首页,这里是http://127.0.0.1: 8080,曾经出现在前面的小火箭欢迎页面没了!将出现404未找到错误页面。

  这很正常。小火箭的欢迎页面是Django在调试模式下发现没有添加路由记录时默认的主页。真正的产品是不会用这个主页的。路由记录一旦改变,就会消失。

  2.路由子表

  url可以像上面这样,一个请求对应一个处理函数。

  但是,有时候,当我们的项目很大时,请求的url会特别大。

  例如,我们的系统为客户、供应商和管理员提供不同的URL,如下所示:

  客户/

  客户/订单/

  销售/

  销售/订单/

  经理/客户/

  经理/药品/

  经理/订单/

  这个时候,我会有很多条路,像这样:

  来自django.contrib导入管理

  从django.urls导入路径

  #不要忘记导入listorders函数

  从销售视图导入列表订单

  urlpatterns=[

  路径( admin/,admin.site.urls),

  #添加以下路由记录

  路径(销售/订单/,listorders),

  路径(销售/订单/,列表订单1),

  路径(销售/订单/,列表订单2),

  路径(销售/订单/,列表订单3),

  路径(销售/订单/,列表订单4),

  路径(经理/订单/,mlistorders),

  路径( mgr/orders/,mlistorders1),

  路径(经理/订单/,mlistorders2),

  路径( mgr/orders/,mlistorders3),

  路径( mgr/orders/,mlistorders3),

  ]

  此时,我们在sales下创建一个新的urls文件,并将上面的代码放在上面。

  同时,将视图中的一个功能更改为几个功能:

  从django.shortcuts导入渲染

  #在此创建您的观点。

  从django.http导入HttpResponse

  定义列表订单(请求):

  返回HttpResponse(下面是系统中的所有订单信息。)

  定义列表订单1(请求):

  返回HttpResponse(下面是系统中的所有订单信息111。)

  定义列表订单2(请求):

  返回HttpResponse(下面是系统222中的所有订单信息。)

  定义列表订单3(请求):

  Return HttpResponse(下面是系统中的所有订单信息333。)

  bysms下的一级路由表由include函数处理:

  此时,当我们遍历一级路由表,然后访问sales下的二级路由表时,因为路由记录路径( sales/,包含( sales。URLs ))在第一级已经自动锁定在销售文件下,所以第二级路由表可以直接删除路径中的销售,只保留下一级:

  简而言之:二级路由表要去掉之前匹配的部分!

  然后再次启动我们的cmd。如果处于最后一种状态,可以按ctrl+C强制终止:

  输入我们的网址:http://127 . 0 . 0 . 1:8080/sales/orders/查看:

  我们将订单修改为订单1、订单2等等。当我们发现网页上的内容是我们各种功能的输出内容时,就说明我们已经成功安排好了!

  这里我们匹配orders/,匹配的对象,这里是views.listorders,这是一个处理函数,所以我们调用这个函数处理这个http请求,从这个函数返回的对象构造一个HTTP响应消息,返回给客户端。

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

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

留言与评论(共有 条评论)
   
验证码: