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

2023-11-21

我已经环顾了一段时间,似乎找不到任何涉及差异的东西。正如标题所述,我试图找出通过 url 路径参数获取数据的区别,例如/content/7然后在 urls.py 中使用正则表达式,并从查询参数中获取它们,例如/content?num=7 using request.GET.get()实际上使。

每种方法都有哪些优缺点?是否存在其中一种明显比另一种更好的选择的情况?

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


这取决于您想要遵循的架构模式。例如,根据 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

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

/users?active=true

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django 中的 URL 路径参数与查询参数 的相关文章

随机推荐