Django 中的 URL 路径参数与查询参数

guc*_*CIV 5 python django

我现在环顾四周,似乎找不到任何与差异有关的东西。正如标题所述,我试图找出通过 url 路径参数获取数据的区别,例如/content/7在 urls.py 中使用正则表达式,并从查询参数中获取它们,例如/content?num=7使用request.GET.get()实际制作。

每种方法的优缺点是什么,是否有任何一种情况显然比另一种更好的选择?

此外,据我所知,(Django 的)首选方法似乎是使用带有正则表达式的 url 路径参数。除了可能更干净的 URL 之外,还有其他原因吗?欢迎提供与该主题相关的任何其他信息。

sli*_*der 5

这将取决于您希望遵循的架构模式。例如,根据 REST 架构模式(我们可以说这是最常见的),您希望设计的 URL 在没有查询参数的情况下指向“资源”,大致对应于应用程序中的名词,然后对应于 HTTP 动词到您可以对该资源执行的操作。

例如,如果您的应用程序有用户,您可能希望这样设计 URL:

GET /users/ # gets all users
POST /users/ # creates a new user
GET /users/<id>/ # gets a user with that id. Notice this url still points to a user resource
PUT /users/<id> # updates an existing user's information
DELETE /users/<id> # deletes a user
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用查询参数来过滤资源中的一组用户。例如,要获取活跃用户,您的 URL 将类似于

/users?active=true
Run Code Online (Sandbox Code Playgroud)

总而言之,查询参数与路径参数取决于您的架构偏好。

REST 更详细的解释:http : //www.vinaysahni.com/best-practices-for-a-pragmatic-restful-api

Roy Fielding 的版本,如果你想获得真正的学术性:http : //www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm