2. Django 创建项目app HTTP请求的url路由

操作系统:windows
IDE:Pycharm

学习资源:
白月黑羽教web
对应B站学习视频:2周入门 web后端开发 web服务端开发

创建项目app:

Django 中的一个app 就是项目里面的一个应用(application),一个完整的项目包含多个app。一个app 通常就是一个相对独立的模块 ,实现相对独立的功能。讲一个项目分成多个app可以使项目结构更加清晰,也方便后续的优化。
一个app 本质上 就是一个 Python 包, 里面包含了一些应用相关的代码文件。

Django 中创建app 可以 通过执行命令,创建一个app目录,并在里面自动创建app常用的文件。
我们就进入项目根目录(在Pycharm中项目根目录右键,选择Open In Terminal),执行下面的命令。

python manage.py startapp sales 

这样就会创建一个目录名为 sales, 对应着名为 sales 的app,里面包含了如下自动生成的文件。
在这里插入图片描述

  • view.py 通常就是编写处理http请求代码的文件

服务器返回内容给浏览器:

浏览器输入网址并敲回车访问,浏览器会对目标网址发送一个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("下面是系统中所有的订单信息。。。")

注意:

  • 这里面最终的返回结果是 HttpResponse 对象的参数字符串 ,就是那句话
  • listorders的参数request是Django中的 HttpQuest对象,包含了请求中的信息。

但这只是定义了这样一个函数,框架并不知道这样的关联关系。如何实现当前端发送过来的HTTP请求 url地址是 /sales/orders/ , 就由 views.py 里面的函数 listorders 来处理呢?
答: 需要Django中的url路由设置

url路由设置:

和项目同名的包下,有一个名为urls.py的文件,这个文件就是url路由设置的路口文件
在这里插入图片描述
编写路由时,可以用 路由子表 的方式,使得结构清晰,也方便修改。通常可以将不同的路由记录按照功能分拆到不同的url路由子表文件中。
比如,这里我们可以把访问的 url 凡是以 sales 开头的全部都由 sales app 目录下面的子路由文件 urls.py 处理。别的开头就用别的app目录下的urls.py来处理。

例如同样是/sales/orders/,可以直接在url.py中的urlpatterns中增加一条:

from django.contrib import admin
from sales.views import listorders

urlpatts = {
	path('admin/', admin.site.urls),	#自带的
	path('/sales/orders/',listorders),
}

而更好的写法是,在url.py中添加:

from django.contrib import admin
from django.urls import path, include

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

    path('sales/', include('sales.urls')),
    # path('mgr/', include('mgr.urls'))
]

注: include是Django里一个专门处理路由的函数。

然后再在sales目录下面创建一个新的文件 urls.py 并添加上:

from django.urls import path
from sales.views import listorders

urlpatterns = [
    path('orders/', listorders),
]

当一个http请求过来时, Django检查 url,比如这里是sales/orders/,先到主url路由文件 urls.py中查看是否有匹配的路由项。如果有匹配 ( 这里匹配了 sales/), 并且匹配的对象是一个子路由设置 , 比如这里是include('sales.urls') 就会去子路由文件中(sales\urls.py)中查看 。
这时,会从请求url中去掉前面主路由文件已经匹配上的部分, 将剩余的部分去子路由文件中查看是否有匹配的路由项。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值