Python Django-URL中的regex可选函数参数
我现在开始学习Django(已经有相当多的Python知识,以及其他语言)。我想知道是否可以通过url将可选参数传递给视图(输入特定url时调用的函数)。我所拥有的: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
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,如:
查看有关httpGET
的更多详细信息,我想您需要的是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,如:
查看httpGET
@ShangWang没有阅读整个文档,但是如果我想让用户只进入一天呢?还是就在这个月?URL中的命名“参数”本身不会使解析变得更容易吗?@ShangWang没有通读整个文档,但是如果我想让用户只进入一天呢?还是就在这个月?URL中的命名“参数”本身不会使解析更容易吗?