Django:向视图中的请求添加可选参数

Posted

技术标签:

【中文标题】Django:向视图中的请求添加可选参数【英文标题】:Django: Add optional parameters to a request in the view 【发布时间】:2018-06-08 21:59:24 【问题描述】:

在我的 Django 应用程序的 views.py 中,我将 GET 请求传递给函数定义。如何检查该请求中的可选参数(如&optional='All'),如果缺少该可选参数,请添加它。这都是在请求被发送到要渲染的模板之前。

这是我目前所拥有的:

def my_function(request):

    #get all the optional parameters 
    optional_params_list = request.GET.keys()

    #see if filter_myfilter is NOT an optional param
    if 'filter_myfilter' not in optional_params_list:
      #add filter_myfilter as a parameter and set it equal to All
      request.filter_myfilter = 'All'

    return render(request, 'quasar.html')

【问题讨论】:

Capturing url parameters in request.GET的可能重复 【参考方案1】:

在您的视图中,您可以访问request.GET,您可以使用它为该视图中的特定 URL 设置新值。正如您所提到的,将 optional 值添加到 GET 参数是可能的。因此,如果值 optional 丢失或不等于 All,我们可以继续将用户重定向到正确的视图。


from django.http import HttpResponseRedirect
from django.core.urlresolvers import reverse

def my_function(request):

    param = request.GET.get('param','All')
    if param != 'All':
        return HttpResponseRedirect(reverse('url_name') + "?optional=All")
        # or
        # return HttpResponseRedirect(request.path + "?optional=All")
    return render(request, 'quasar.html')

【讨论】:

以上是关于Django:向视图中的请求添加可选参数的主要内容,如果未能解决你的问题,请参考以下文章

如何创建一个带有可选辅助 View 参数的 SwiftUI 视图?

当我将可选参数传递给视图时,为啥我的 CSS 静态文件在 Django 中不起作用?

django - 可选 url 参数的正则表达式

Django路由系统(一)

Django框架之路由

Django:Django的路由系统