Python Django-URL中的regex可选函数参数

Python Django-URL中的regex可选函数参数,python,regex,django,django-urls,Python,Regex,Django,Django Urls,我现在开始学习Django(已经有相当多的Python知识,以及其他语言)。我想知道是否可以通过url将可选参数传递给视图(输入特定url时调用的函数)。我所拥有的: url(regex=r'^bydate/year=(?p[0-9]+)\u month=(?p[0-9]+)\u day=(?p[0-9]+)/$),view=views.question\u by_date,name='question\u by_date') 因此,换句话说,如果url的结尾如下所示,例如: …按日期/年=20

我现在开始学习Django(已经有相当多的Python知识,以及其他语言)。我想知道是否可以通过url将可选参数传递给视图(输入特定url时调用的函数)。我所拥有的:

url(regex=r'^bydate/year=(?p[0-9]+)\u month=(?p[0-9]+)\u day=(?p[0-9]+)/$),view=views.question\u by_date,name='question\u by_date')

因此,换句话说,如果url的结尾如下所示,例如:

…按日期/年=2001\u月=11\u日=2/

然后调用
question\u by\u date
函数,其签名如下:

问题日期(请求,**kwargs)

因此,使用上面的url,
question\u by\u date
将被称为

问题日期(请求,年=2001,月=11,日=2)

但是我也希望用户能够输入url,只指定年份,例如

…截止日期/年份=2005/

哪个电话

问题日期(请求,年份=2005)

或者,年、月、日的任意组合(比如年和月,甚至年和日,等等)

那么,这可能吗?我对正则表达式没有太多的经验,我知道在正则表达式中可以有可选的字符串匹配(零或更多),这在正常情况下可以很好地匹配上面的内容,但这里我们也将(可选)参数传递给函数

注:


已经提出了一个与此非常类似的问题。我意识到我可以为每个组合创建不同的URL,但这需要创建8个不同的URL。而且,这个问题是6年前提出的。希望在此期间进行了一些增强?

我认为您需要的是
获取此项的参数:

  • 定义不带任何参数的url:

    url(r'^bydate/$,views.question\u by\u date,name='question-by-date')

  • 在视图中,提取
    GET
    参数:

  • from datetime导入日期

    def question_by_date(request):
        year = request.GET.get('year', 2005)
        month = request.GET.get('month', 1)
        day = request.GET.get('day', 1)
        # use the parameters however you want afterwards
    
  • 调用您的url,如:


  • 查看有关http
    GET

    的更多详细信息,我想您需要的是
    GET
    参数:

  • 定义不带任何参数的url:

    url(r'^bydate/$,views.question\u by\u date,name='question-by-date')

  • 在视图中,提取
    GET
    参数:

  • from datetime导入日期

    def question_by_date(request):
        year = request.GET.get('year', 2005)
        month = request.GET.get('month', 1)
        day = request.GET.get('day', 1)
        # use the parameters however you want afterwards
    
  • 调用您的url,如:


  • 查看http
    GET

    @ShangWang没有阅读整个文档,但是如果我想让用户只进入一天呢?还是就在这个月?URL中的命名“参数”本身不会使解析变得更容易吗?@ShangWang没有通读整个文档,但是如果我想让用户只进入一天呢?还是就在这个月?URL中的命名“参数”本身不会使解析更容易吗?