Django(五)-Django路由url

Django(五)-Django路由url

前面讲到了Django项目在创建之后的默认文件夹中的文件,比如我们在创建一个名为“djang1”的项目后(如果不会创建Django项目,请看“Django(一)-Django环境的搭建”),我们打开Django为我们创键的文件,会发现里面有一个叫“django1”的文件夹,打开后,会看到如下文件:

django1

__init__.py
settings.py
urls.py
wsgi.py

本篇就是讲url的相关内容

一、添加一个最基础的路由

我们打开urls.py文件,看一下这个文件里面的内容:

"""fresh_shop URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/2.1/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.urls import include, path
    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.urls import path
urlpatterns = [
    path('admin/', admin.site.urls),
]

基本上大家新建的django项目中默认创建的urls.py文件都是这样,这里面的注释大家可以看一下,大概就是讲解这个东西的相关配置,在这下面的urlpatterns变量就是设置路由的地址,比如Django默认为我们写的path(‘admin/’, admin.site.urls),这个是Django自带的一个管理系统的路由,在我们进行第一次迁移之后,运行Django,在地址后面输入admin就可以进入Django自带的系统(这儿就不细讲了)。

所以,最简单的路由配置格式就是:

path('路由/', 视图文件),

比如,当我们创建了一个名为app的应用时,在app下的views视图文件下创建一个名为“index"的函数时,路由配置就是:

path('index/', app.views.index),

当然,这个地方的app.views.index需要导包。

这样就添加了一个最简单,也是最基础的路由,我们就可以在地址中通过访问”index“查看这个视图。

二、路由的相关参数

1、变量为path时

当使用的是path时,在路由中我们可以传相关参数。比如我们在访问一些网址时会发现,有的网址后面有一串数字,字母什么的,这就是路由中传过去的一些参数。具体参数如下表(都以"/index/"为例):

参数类型设置格式使用方式
整型‘index/<int:变量名>/’/index/参数值/
字符串‘index/<srt:变量名>/’/index/参数值/
uuid‘index/<uuid:变量名>/’/index/参数值/
路径‘index/<path:变量名>/’/index/参数值/

当接收的参数类型为整数时,大多适用在传相关ID的地方,比如商城系统中,查看单个商品信息时,往往需要传商品对应的ID,从而在数据库中查询商品的具体信息,在这儿就比较适用。在渲染页面的时候,只需要在视图函数的参数中接收对应参数就可以使用了。

字符串类型、uuid类型与整数使用的方式差不多,只是各自的使用场景不太一样,根据相应的场景,灵活选用参数才行。

在这儿需要注意一下路径类型,也就是path时,它可以接收一切类型的数据,只要能显示出来的字符,它都可以接受,所以在使用的时候需要注意的地方比较多。大多时候,前面三种类型就足够了。

2、变量为re_path时

当变量是re_path,这个与path使用的方式,以及各式差不多,只是需要导re_path这个包。

不知道大家看到re会不会想到正则。没错,这个里面参数没有固定的类型,就是依靠正则去进行匹配。我们来看看怎么使用的:

一个最简单的路由:

re_path('index/(\d+)/', app.views.index),

这个就是一个匹配数字的路由,在进行访问的时候也和整型差不多,地址:/index/数字/ 进行访问。

re_path传多个参数:re_path(‘params/(\d+)/(\d+)/(\d+)’, app.views.index),注意:接收方法中,接收参数的顺序和路由器中定义的正则表达式的顺序一致。

还可以传多个时间参数:re_path(‘params/(?P\d+)/(?P\d+)/(?P\d+)/’, app.views.index),注意:已经定义了多个参数的参数名,接收数据时,对于位置没有影响。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值