Django新手上路——路由补充

Django新手上路——路由补充 1

1. 传递额外参数

1.1 简介

在path, re_path方法中,传递一个kwargs 的字典参数。需要给app下每个视图函数传参数时尤为有用。

1.2 使用

# 在urls.py文件的path函数中直接使用
urlpatterns = [
path('index/', views.index, kwargs = {key : value}, views.index)
 ]
  • kwargs参数接受的数据类型为字典
  • 若key与path中传递的参数重名,以key的值为主

path(‘index//’, views.index, kwargs = {‘id’ : 10})
views.index接收到的参数为10

  • 若在根路由表中使用,则子路由表对应的所有视图函数均会接收到。

2. url命名

1. 重定向

项目开发中,对于一个请求不全是给与响应页面,有时需要跳转到另一个url,这就是重定向

#views.py文件中
from django.shortcuts import redirect

def login(request):
    return redirect('/book/hello')

不难发现上述编码均为硬编码,不宜与代码维护,实际采用url命名方法避免。


2. 使用

2.1. 在路由表path方法中添加参数name
 #文件为book/urls.py
 urlpatterns = [
     path('hello/', views.hello, name='hello')
  ]
2.2. 在需要定向的地方通过name参数值获取url
#文件为book/views.py
from django.shortcuts import reverse, redirect
def login(request):
    #通过name获取url
    url = reverse('hello')
    #重定向
    return redirect(url)   
3. 注意

当不同模块子路由表中url命名相同时,reverse解析会出错,解决方法:

#子路由表中申明变量app_name
#book app的urls.py文件中: app_name = app名称
app_name= 'book'  #与app名称一致
   
#reverse解析:reverse('app_name:url_name')
url = reverse('book:index')


  1. 东强出品,必属精品 ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值