我目前正在定义正则表达式,以便捕获URL中的参数,如教程中所述。我如何访问参数从URL作为HttpRequest对象的一部分?
我的HttpRequest。GET当前返回一个空的QueryDict对象。
我想学习如何在没有库的情况下做到这一点,这样我就可以更好地了解Django。
我目前正在定义正则表达式,以便捕获URL中的参数,如教程中所述。我如何访问参数从URL作为HttpRequest对象的一部分?
我的HttpRequest。GET当前返回一个空的QueryDict对象。
我想学习如何在没有库的情况下做到这一点,这样我就可以更好地了解Django。
当前回答
如果你不知道参数的名称,想要使用它们,你可以使用request.GET.keys()或dict(request.GET)函数
其他回答
如果你只能访问视图对象,那么你可以通过这种方式获取URL路径中定义的参数:
view.kwargs.get('url_param')
如果你只有访问请求对象的权限,使用下面的方法:
request.resolver_match.kwargs.get('url_param')
在Django 3上测试。
你有两种常见的方法来做到这一点,以防你的URL看起来像这样:
https://domain/method/?a=x&b=y
版本1:
如果一个特定的键是强制性的,你可以使用:
key_a = request.GET['a']
如果键存在,则返回值为a,如果不存在则返回异常。
版本2:
如果你的键是可选的:
request.GET.get('a')
你可以尝试没有任何参数,这不会崩溃。 所以你可以用try: except:来包装它,并返回HttpResponseBadRequest()。 这是一种使代码不那么复杂的简单方法,不需要使用特殊的异常处理。
这并不是您所需要的,但是这段代码有助于管理模板中的query_strings。
Url参数可能被request.query_params捕获
对于只有request对象的情况,可以使用request.parser_context['kwargs']['your_param']