我应该如何将这个长而复杂的PHP样式URL查询字符串转换为Django网址?

JAL*_*JAL 3 python django url url-routing

我正在将一个小的PHP应用程序转换为Django.

一个部分具有长查询字符串,指示窗口小部件的显示方式.有一些必需的参数和几个可选的参数.

目前的网址如下:

app.php?id=102030&size=large&auto=0&bw=1&extra=1
Run Code Online (Sandbox Code Playgroud)

id和size是必需的,但auto,bw和extra是可选的.如果没有指定,我会使用默认值.

我的第一个想法是使用所需的信息,ID和大小制作一个django URL模式:

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

可选参数将是一个查询字符串,如

/app/102030/large?auto=0&bw=1&extra=0
Run Code Online (Sandbox Code Playgroud)

将GET参数与Django中的URL conf中定义的参数混合是一种常见做法吗?或者我应该这样做

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/
Run Code Online (Sandbox Code Playgroud)

任何关于最佳实践或问题的建议都要记住这两种风格,我们对此表示赞赏!

har*_*rto 9

如果您认为"URL"代表统一资源定位器,则URL应仅指示正在显示的资源,并且任何"配置"选项都应作为参数传递.所以,我认为你的第一个想法很好.