Django路由Router

本文介绍了Django项目中的路由配置,包括不同类型的路由(基础路由、子路由、命名空间),参数传递方法,以及视图函数和模板中的重定向与反向解析。重点讲解了如何组织和管理多个应用的URL,以及如何处理数据迁移和数据库操作。
摘要由CSDN通过智能技术生成

一、路由Router


在实际开发过程中,一个Diango 项目会包含很多的 app ,这时候如果我们只在主路由里进行配置就会显得杂乱无章,所以通常会在每个 app 里,创建各自的 urls.py路由模块,然后从根路由出发,将 app 所属的 url 请求,全部转发到相应的 urls.py 模块中。而这个从主路由转发到各个应用路由的过程叫做路由的分发

基础路由匹配可以参考之前的文章

Django基本视图

在项目根目录中需要使用模版文件的话需要在根目录下创建一个templates文件夹并在settings里设置要DIRS

# 项目根目录

BASE_DIR = Path(__file__).resolve().parent.parent

在定义视图函views.py和配置路由urls.py的时候并没有先后顺序

大多数项目中需要对数据库进行增删改查的,所以还要用到models.py,其实一个项目的开始一般会先设计models,相当于设计数据库

# 注意 需要数据迁移

# 如果models.py文件有变动,需要重新迁移

# 生成迁移文件:python manage.py makemigrations

# 执行迁移文件:python manage.py migrate

执行完迁移操作后就会成功生成数据库


1.直接使用根路由

对应的视图函数

2.使用子路由

3.使用子路由可以使用命名空间 namespace

以上2种路由方式得到的结果是一样的

我们想要从首页点击跳转到用户页面,下面是2种路由的方式

一种是url路由方式,一种是反向解析方式

带命名空间的反向解析需要将url设置为带命名空间的

在html页面中写法需要带上namespace定义的名字

路由匹配,传参

在视图函数中新定义了一个user_detail函数

在用户列表页面按照带命名空间的反向路由写上链接

在用户详情页面将用户的数据都显示出来

这样在页面点击用户名就会跳转到用户详情页面

在页面末尾会自动带上数据库里取出来的主键作为user_id 传给user_detail视图函数

多个参数传递的方式,新定义一个user_ab_view的函数

以上是在html中做跳转的方法,以下再学习一下在视图函数中做跳转的方法

重定向需在导入2个包redirect, reverse

新定义一个重定向函数 my_redirect()

在浏览器中输入http://127.0.0.1:8000/App/myredirect

他就会自动跳转到用户列表页面http://127.0.0.1:8000/App/users/

反向解析

带关键字传参写法

如果用了命名空间,后面的反向解析包括视图函数和模板中都要使用命名空间。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 React 中使用 React Router 来实现动态路由非常简单。下面是一个简单的示例代码: ```javascript import { BrowserRouter as Router, Route, Switch } from 'react-router-dom'; function App() { return ( <Router> <Switch> <Route exact path="/" component={Home} /> <Route path="/about" component={About} /> <Route path="/users/:id" component={User} /> <Route component={NotFound} /> </Switch> </Router> ); } function User(props) { const { match } = props; const { id } = match.params; // 根据 id 获取用户信息并渲染到页面上 return <div>User {id}</div>; } ``` 在这段代码中,我们使用了 `react-router-dom` 中提供的 `BrowserRouter`、`Route` 和 `Switch` 组件来实现路由功能。其中: - `BrowserRouter`:表示使用浏览器的 `history` API 来管理路由,可以通过 `Link` 组件来跳转路由; - `Route`:表示一个路由规则,当浏览器的路径与该规则匹配时,会渲染对应的组件; - `Switch`:表示只匹配第一个符合条件的路由规则,如果没有匹配的规则,则渲染 `Route` 组件的 `component` 属性为 `NotFound` 的组件。 在上面的示例代码中,我们定义了三个路由规则: - `/` 路径对应的是 `Home` 组件; - `/about` 路径对应的是 `About` 组件; - `/users/:id` 路径表示动态路由,`:id` 表示用户的 ID,对应的是 `User` 组件。 当用户访问 `/users/1` 路径时,`User` 组件会被渲染,并且通过 `match.params` 属性可以获取到动态路由中的参数,例如上面代码中的 `id` 参数。 至于后端使用 Django 的话,前端只负责路由的渲染和页面的显示,后端需要提供 API 接口来获取数据并返回给前端,前端再将数据渲染到页面上。可以使用 Django 的 REST framework 来实现 API 接口。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值