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

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

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


当前回答

对于只有request对象的情况,可以使用request.parser_context['kwargs']['your_param']

其他回答

如果你不知道参数的名称,想要使用它们,你可以使用request.GET.keys()或dict(request.GET)函数

我想分享一个可以节省你时间的小窍门。 如果你计划在urls.py文件中使用这样的东西:

url(r'^(?P<username>\w+)/$', views.profile_page,),

这意味着www.example.com/<用户名>。一定要把它放在URL条目的末尾,否则,它很容易与下面的URL条目发生冲突,即访问其中一个URL条目会给你一个漂亮的错误:用户匹配查询不存在。 我自己也经历过;希望能有所帮助!

def some_view(request, *args, **kwargs):
    if kwargs.get('q', None):
        # Do something here ..

这是另一个可以实现的替代解决方案:

在URL配置中:

urlpatterns = [path('runreport/<str:queryparams>', views.get)]

视图中:

list2 = queryparams.split("&")

使用GET

request.GET["id"]

使用POST

request.POST["id"]