如何构建匹配Django export_selected_objects重定向的URL?
问题分析与解决
你忽略了核心要点:重定向生成的URL里,ct和ids是查询参数(?后面的部分),并非URL路径中的分段参数。
具体问题拆解
你的重定向代码生成的URL格式是:/export/?ct=xxx&ids=1,2,3,其中:
/export/是URL的路径部分ct和ids是?之后的查询参数,这部分内容不会被Django的URLconf(即你写的urlpatterns)匹配,URLconf只负责匹配?之前的路径部分。
而你写的所有URL配置,都是把ct和ids当作路径里的分段(比如/export/12/3456/),和重定向的URL结构完全不匹配,所以自然无法命中。
正确的配置方式
- 修正URLconf
只需要匹配/export/这个基础路径即可,不需要在URL里定义ct和ids:
from django.urls import path from . import views urlpatterns = [ path('export/', views.test), ]
- 在视图函数中获取查询参数
在views.test里,通过request.GET来获取这两个参数:
def test(request): ct = request.GET.get('ct') # 获取ct参数 ids_str = request.GET.get('ids') # 处理ids:把逗号分隔的字符串转成整数列表 ids = [int(pk) for pk in ids_str.split(',')] if ids_str else [] # 后续业务逻辑...
额外说明
如果你的需求是想用路径参数的形式(比如/export/12/1,2,3/),那需要修改重定向的代码,把查询参数改成路径分段,再对应调整URLconf,但根据你当前的重定向逻辑,正确的做法是匹配基础路径后在视图里取查询参数。
内容的提问来源于stack exchange,提问作者knetheiner
相关产品推荐
相关产品推荐

