我目前正在定义正则表达式,以便捕获URL中的参数,如教程中所述。我如何访问参数从URL作为HttpRequest对象的一部分?
我的HttpRequest。GET当前返回一个空的QueryDict对象。
我想学习如何在没有库的情况下做到这一点,这样我就可以更好地了解Django。
我目前正在定义正则表达式,以便捕获URL中的参数,如教程中所述。我如何访问参数从URL作为HttpRequest对象的一部分?
我的HttpRequest。GET当前返回一个空的QueryDict对象。
我想学习如何在没有库的情况下做到这一点,这样我就可以更好地了解Django。
当前回答
似乎更推荐使用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请求。”
其他回答
如果你只能访问视图对象,那么你可以通过这种方式获取URL路径中定义的参数:
view.kwargs.get('url_param')
如果你只有访问请求对象的权限,使用下面的方法:
request.resolver_match.kwargs.get('url_param')
在Django 3上测试。
这并不是您所需要的,但是这段代码有助于管理模板中的query_strings。
对于只有request对象的情况,可以使用request.parser_context['kwargs']['your_param']
使用GET
request.GET["id"]
使用POST
request.POST["id"]
当URL是domain/search/?q=哈哈,你会使用request.GET。(‘问’,”)。
Q是您想要的参数,如果没有找到Q,则“”是默认值。
然而,如果你只是配置你的URLconf**,那么你从regex捕获的信息将作为参数(或命名参数)传递给函数。
如:
(r'^user/(?P<username>\w{0,50})/$', views.profile_page,),
那么在你的视图。py中
def profile_page(request, username):
# Rest of the method