Django - 为啥视图中的“默认值”不起作用?

Posted

技术标签:

【中文标题】Django - 为啥视图中的“默认值”不起作用?【英文标题】:Django - Why is the “default value” in view not working?Django - 为什么视图中的“默认值”不起作用? 【发布时间】:2020-10-31 05:06:47 【问题描述】:

我的索引视图应该使用默认的“日期”值查询一些数据。 对于测试,我输入了一个字符串作为默认值。 :“2019-08-01” 我的网址:

urlpatterns = [
     path('<str:date_index>', views.index, name='index'),
    ]

我的看法:

def get_reunions_by_date(date_r):
    return Reunion.objects.filter(datetime_start__startswith=date_r) \
        .order_by('numero', 'hippodrome__nom')

def index(request, date_index="2019-08-01"):
    year, month, day = map(int, date_index.split('-'))
    date_du_jour = date(year, month, day)
  
    return render(request, 'myapp/index.html', 
        'reunions': get_reunions_by_date(date_du_jour),
        'date_du_jour': date_du_jour
    )

现在,如果我输入这个 url:myapp/2019-01-01,它正在工作,索引模板会被渲染,但是如果我输入这个 url:myapp/,什么都不会渲染。 为什么不在视图中采用默认值date_index="2019-08-01"? 我不明白。

【问题讨论】:

【参考方案1】:

我认为您应该将其添加到您的网址:

 path('', views.index, name='index'),

我的意思是这样的:

urlpatterns = [
    path('<str:date_index>', views.index, name='index'),
    path('', views.index, name='index'),
]

【讨论】:

以上是关于Django - 为啥视图中的“默认值”不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

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

为啥这个 Django 日志记录不起作用?

为啥 django 中的 Simple 标签不起作用?

为啥“发布”方法在我的 django 应用程序中不起作用?

Django 模型字段可调用默认值不起作用

为啥这个(Django)“过滤器”功能不起作用?