精通Django 3 Web开发
上QQ阅读APP看书,第一时间看更新

3.3 设置商城的路由地址

我们已在babys文件夹的urls.py分别为项目应用index、shopper和commodity设置路由分发功能,本节将会在项目应用index、shopper和commodity的urls.py定义网站首页、商品列表页、商品详细页、购物车页面、个人中心页面和用户登录注册页面的路由地址。

首先打开项目应用index的urls.py,在该文件中定义网站首页的路由地址,定义方法如下:

上述代码中,我们只在项目应用index的urls.py定义了路由地址index,路由地址由Django内置函数path完成定义过程,函数path设置了3个参数,每个参数的说明如下:

(1)第一个参数为空字符串,这是设置具体的路由地址,由于babys文件夹的urls.py的路由分发为path('', include(('index.urls', 'index'), namespace='index')),即代表网址127.0.0.1:8000,而index的urls.py定义的路由地址index设为空字符串,那么路由地址index的网址为127.0.0.1:8000。

(2)第二个参数为indexView,这是指向项目应用index的views.py的某个视图函数或视图类,当用户在浏览器访问127.0.0.1:8000的时候,Django将接收到一个HTTP请求,从该请求中获取路由地址并与自身的路由列表进行匹配,如果路由地址匹配成功,Django将HTTP请求交给路由地址指向的某个视图函数或视图类进行业务处理。

(3)第三个参数为name='index',这是函数path的可选参数,该参数是命名路由地址。实际开发中必须为每个路由地址进行命名,可以在视图或模板中使用路由名称生成相应的路由地址。

下一步打开项目应用commodity的urls.py,在该文件中定义商品列表页和商品详细页的路由地址,详细的定义过程如下:

上述代码分别定义了商品列表页的路由地址commodity和商品详细页的路由地址detail,路由地址的定义说明如下:

(1)项目应用commodity的urls.py路由空间是path('commodity', include(('commodity.urls','commodity'), namespace='commodity')),因此路由commodity为127.0.0.1:8000/commodity.html,路由detail为127.0.0.1:8000/commodity/detail/id.html。

(2)路由detail设置了路由变量id,该变量以整数型表示,它可以代表1、2、3……等整数,变量id对应商品信息表的主键id,通过改变变量id的数值可以查看不同商品的详细介绍。

(3)路由地址的末端设置了“.html”,这是一种伪静态URL技术,可将网址设置为静态网址,用于SEO搜索引擎的爬取,如百度、谷歌等。此外,在末端设置“.html”是为变量id设置终止符,假如末端没有设置“.html”,并且路由变量为字符串类型,在浏览器上输入无限长的字符串,路由也能正常访问。

(4)路由commodity和detail的业务逻辑处理分别指向项目应用commodity的views.py定义的视图函数commodityView和detailView。

最后打开项目应用shopper的urls.py,在该文件中定义个人中心页、购物车信息页、用户登录注册页和用户注销的路由地址,详细代码如下:

上述代码定义了4条路由地址,每个路由所对应的功能说明如下:

(1)路由shopper代表个人中心页,它的路由空间是path('shopper', include(('shopper.urls','shopper'), namespace='shopper')),因此路由地址为127.0.0.1:8000/shopper.html,个人中心页的业务逻辑由项目应用shopper的views.py定义的视图函数shopperView实现。

(2)路由login代表用户登录注册页,路由地址为127.0.0.1:8000/shopper/login.html,它的业务逻辑由项目应用shopper的views.py定义的视图函数loginView实现。

(3)路由logout实现个人中心的用户注销功能,路由地址为127.0.0.1:8000/shopper/logout.html,它的业务逻辑由项目应用shopper的views.py定义的视图函数logoutView实现。

(4)路由shopcart代表购物车信息页,路由地址为127.0.0.1:8000/shopper/shopcart.html,它的业务逻辑由项目应用shopper的views.py定义的视图函数shopcartView实现。