如何将这个复杂的PHP风格URL查询字符串转换为Django URL?

4 投票
1 回答
613 浏览
提问于 2025-04-15 17:52

我正在把一个小的PHP应用程序转换成Django。

其中有一部分包含了一个很长的查询字符串,用来指示一个小部件应该如何显示。这里面有几个必填的参数,还有一些可选的。

现在的URL看起来像这样:

app.php?id=102030&size=large&auto=0&bw=1&extra=1

其中id和size是必填的,而auto、bw和extra是可选的。如果没有提供可选参数,我会使用默认值。

我最初的想法是创建一个Django的URL模式,包含必填的信息,也就是id和size:

url(r'^/app/(P?<id>)\d+/(P?<size>)\w+$',app.project.views.widget,name='swidget')

可选参数就可以放在查询字符串里,比如:

/app/102030/large?auto=0&bw=1&extra=0

在Django中,把GET参数和在URL配置中定义的参数混合使用是常见做法吗?还是说我应该像这样做:

url(r'^/app/(P?<id>)\d+/(P?<size>)\w+/(P?<auto>)\d/(P?<bw>)\d/(P?<extra>)\d[/]?,'app.project.views.widget,name='swidget')
#so it would look like:
/app/102030/large/0/1/0/

如果你有关于这两种风格的最佳实践或需要注意的问题,欢迎分享建议!

1 个回答

8

如果你考虑一下,“URL”代表的是统一资源定位符,这个URL应该只用来指示要显示的资源,而任何“配置”选项都应该作为参数传递。所以,我觉得你最开始的想法是没问题的。

撰写回答