我目前正在定义正则表达式,以便捕获URL中的参数,如教程中所述。我如何访问参数从URL作为HttpRequest对象的一部分?

我的HttpRequest。GET当前返回一个空的QueryDict对象。

我想学习如何在没有库的情况下做到这一点,这样我就可以更好地了解Django。


当前回答

Url参数可能被request.query_params捕获

其他回答

这些查询目前有两种方式。如果您想访问查询参数(GET),您可以查询以下命令:

http://myserver:port/resource/?status=1
request.query_params.get('status', None) => 1

如果你想访问POST传递的参数,你需要通过这种方式访问:

request.data.get('role', None)

使用'get()'访问字典(QueryDict),可以设置一个默认值。在上述情况下,如果没有通知'status'或'role',则值为None。

似乎更推荐使用request.query_params。例如,

当URL是domain/search/?Q =哈哈,你会使用request.query_params。(“问”,没有一个)

https://www.django-rest-framework.org/api-guide/requests/

”的请求。query_params是request.GET的同义词。

为了代码内部清晰,我们建议使用request。query_params而不是Django标准的request.GET。这样做有助于让你的代码更加正确和明显——任何HTTP方法类型都可能包含查询参数,而不仅仅是GET请求。”

使用GET

request.GET["id"]

使用POST

request.POST["id"]

如果你只能访问视图对象,那么你可以通过这种方式获取URL路径中定义的参数:

view.kwargs.get('url_param')

如果你只有访问请求对象的权限,使用下面的方法:

request.resolver_match.kwargs.get('url_param')

在Django 3上测试。

views.py

从rest_framework。response import响应 Def update_product(请求,pk): 返回响应({“pk”:pk})

Pk表示主键。

urls . py

从产品。视图导入update_product django。url导入路径 Urlpatterns = [ …, 路径(更新/产品/ < int: pk >”,update_product) ]