【零基础学Python】后端开发篇 第二十二节–Python Web开发(三):HTTP请求的url路由

【零基础学Python】后端开发篇 第二十二节--Python Web开发(三):HTTP请求的url路由

一、要实现的目标

【零基础学Python】后端开发篇 第二十二节--Python Web开发(三):HTTP请求的url路由

二、创建项目app

1.APP介绍

Django 中的一个 app 就是项目里面的一个应用的意思。一个项目包含多个app。一个app 通常就是一个 相对独立的模块 ,实现相对独立的功能。 比如,我们可以把 这个系统的 管理员管理的功能 做在一个名字为 mgr的app里面,把 销售人员的操作 实现在另外一个名字为 sales的app里面。 一个app 本质上 就是一个 Python 包, 里面包含了一些应用相关的代码文件。当然,一个项目分成多少个app 这完全取决你的设计。 你把所有的功能都放入一个大app内也可以实现功能,只是这样做,这个app特别的臃肿。

2.创建APP

Django 中创建app 可以 通过执行命令,创建一个app目录,并在里面自动创建app常用的文件。比如,现在我们需要一个app 专门处理 白月医药系统中销售员的 添加、修改、查询、删除请求。 我们就进入项目根目录,执行下面的命令。

python manage.py startapp sales

【零基础学Python】后端开发篇 第二十二节--Python Web开发(三):HTTP请求的url路由
sales/
    __init__.py
    admin.py
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    views.py

这个目录其实就是一个 python package里面有很多文件,后面我们会分别讲到它们的作用。

三、返回 页面内容 给浏览器

当浏览器地址栏中输入网址访问的时候,服务端是如何让浏览器呈现出网页内容的? 是这样的: 当我们输入网址,比如百度网址,比较敲回车后, 浏览器会发出http请求给百度的服务器,百度服务器返回 HTML 文档内容给浏览器, 浏览器解析后,呈现出我们最终看到的网页内容。 服务器返回的 HTML 文档内容其实就是 符合 HTML 语法的 一段字符串 而已。 我们现在使用Django 开发后端服务, 就可以响应 浏览器的http请求, 返回一段HTML字符串, 浏览器就可以呈现在界面上了。刚才我们创建的 sales 应用里面 有个 views.py 文件。 这个文件里面通常是写处理http 请求的代码的。 比如,我们 设计 凡是浏览器访问的http 请求的 url 地址 是 /sales/orders/ , 就由 views.py 里面的函数 listorders 来处理, 返回一段字符串给浏览器。 我们打开 views.py , 在里面加入如下内容:

from django.http import HttpResponse

def listorders(request):
    return HttpResponse("下面是系统中所有的订单信息。。。")

【零基础学Python】后端开发篇 第二十二节--Python Web开发(三):HTTP请求的url路由

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

以下是系统中的所有订单信息。<details><summary>*<font color='gray'>[En]</font>*</summary>*<font color='gray'>The following is all the order information in the system.</font>*</details>

listorders的参数 request 是 Django&#x4E2D;&#x7684; HttpRequest &#x5BF9;&#x8C61;,包含了HTTP请求中的信息。 后端程序处理请求,常常要根据请求中的数据进行相应的处理:比如请求添加一个用户,那么HTTP请求消息中就会携带要添加用户的信息(姓名、登录账号等)。我们写后端的代码,这些信息就在 HttpRequest对象中获取。所以这个参数非常重要。

光是定义了这样一个函数不行的,我们需要 告诉 Django : 当前端发送过来的HTTP请求 url地址 是 /sales/orders/ , 就由 views.py 里面的函数 listorders 来处理 怎么告诉Django呢? 这就是 Django中的 url路由设置。

四、url路由

1.添加路由记录

【零基础学Python】后端开发篇 第二十二节--Python Web开发(三):HTTP请求的url路由
from django.contrib import admin
from django.urls import path

别忘了导入 listorders 函数
from sales.views import listorders

urlpatterns = [
    path('admin/', admin.site.urls),

    # 添加如下的路由记录
    path('sales/orders/', listorders),
]

urlpatterns 列表 就是 Django 的 url 路由的入口。

有一条条的路由记录,我们增加了:

[En]

There are routing records one by one, which we added:

path('sales/orders/', listorders)

就是告诉 当前端过来的请求 url地址 是 /sales/orders/ (注意:最后的一个斜杠不能省略) , 就由 views.py 里面的函数 listorders 来处理。 所以,所谓 路由 就是指 : 根据 HTTP请求的url路径, 设置 由哪个 函数来处理这个请求。

1.1解决 ERROR: Could not find a version that satisfies the requirement xxx

【零基础学Python】后端开发篇 第二十二节--Python Web开发(三):HTTP请求的url路由
pip install 包名 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

即:

pip install sales -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

【零基础学Python】后端开发篇 第二十二节--Python Web开发(三):HTTP请求的url路由

1.2启动web服务

【零基础学Python】后端开发篇 第二十二节--Python Web开发(三):HTTP请求的url路由

注意:

【零基础学Python】后端开发篇 第二十二节--Python Web开发(三):HTTP请求的url路由

这是正常的,小火箭欢迎页面 是Django在调试模式下,发现路由记录没有添加的时候,缺省作为首页的。 真正的产品是不会使用这个首页的。一旦路由记录发生变动, 就会消失。

2.路由子表

url 路由表就是可以像上面这样,一个请求对应一个处理函数。 但是有的时候,我们的项目比较大的时候, 请求的url 会特别多。 比如我们的系统提供给 客户、销售商、管理员 访问的url是不一样的,如下:

customer/
customer/orders/

sales/
sales/orders/

mgr/
mgr/customers/
mgr/medicines/
mgr/orders/

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

[En]

At this time, I will have a lot of paths, like this:

from django.contrib import admin
from django.urls import path
别忘了导入 listorders 函数
from sales.views import listorders
urlpatterns = [
    path('admin/', admin.site.urls),
添加如下的路由记录
    path('sales/orders/', listorders),
    path('sales/orders/', listorders1),
    path('sales/orders/', listorders2),
    path('sales/orders/', listorders3),
    path('sales/orders/', listorders4),

    path('mgr/orders/', mlistorders),
    path('mgr/orders/', mlistorders1),
    path('mgr/orders/', mlistorders2),
    path('mgr/orders/', mlistorders3),
    path('mgr/orders/', mlistorders3),
]

【零基础学Python】后端开发篇 第二十二节--Python Web开发(三):HTTP请求的url路由
from django.shortcuts import render

Create your views here.

from django.http import HttpResponse

def listorders(request):
    return HttpResponse("下面是系统中所有的订单信息。。。")
def listorders1(request):
    return HttpResponse("下面是系统中所有的订单信息111。。。")
def listorders2(request):
    return HttpResponse("下面是系统中所有的订单信息222。。。")
def listorders3(request):
    return HttpResponse("下面是系统中所有的订单信息333。。。")

【零基础学Python】后端开发篇 第二十二节--Python Web开发(三):HTTP请求的url路由

【零基础学Python】后端开发篇 第二十二节--Python Web开发(三):HTTP请求的url路由

Original: https://blog.51cto.com/u_15492594/5565019
Author: 是Dream呀
Title: 【零基础学Python】后端开发篇 第二十二节–Python Web开发(三):HTTP请求的url路由

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/504295/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球