为啥我的 django 模板无法识别我在 views.py 文件中设置的 url 参数?

Posted

技术标签:

【中文标题】为啥我的 django 模板无法识别我在 views.py 文件中设置的 url 参数?【英文标题】:Why does my django template not recognize the url parameters I set in my views.py file?为什么我的 django 模板无法识别我在 views.py 文件中设置的 url 参数? 【发布时间】:2021-12-05 01:38:59 【问题描述】:

我正在使用 Django 构建一个事件管理应用程序。我创建了一个动态日历,并尝试在导航中添加指向下个月日历的链接。

urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('', views.home, name = 'home'),
    path('<int:year>/<str:month>/', views.home),
]

在我的 views.py 文件中,我添加了如下参数:

def home(request, year=datetime.now().year, month=datetime.now().strftime('%B')):
<li class="nav-item">
  <a class="nav-link" href="% url 'home' '2021' 'November' %">November</a>
</li>

当我添加两个参数时,我得到一个模板渲染错误:

未找到带有参数“('2021','November')”的“家”的反向。尝试了 1 种模式:['$']

当我删除两个参数并只离开“家”时,模板错误消失了,我不知道为什么。任何帮助表示赞赏!

【问题讨论】:

您能否显示您的 urls 文件的内容,以便我们查看您如何将 url 映射到方法? 请确保向用户提供所有相关信息以帮助您回答问题。 刚刚添加了我的 urls.py 文件! 【参考方案1】:

这里有两个不同的 url,它们恰好由同一个视图处理。第一个url是你的主页,没有指定日期,第二个是你的页面,指定了年月。

将它们作为两个不同命名的 url 模式处理,例如:

urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('', views.home, name='home'),
    path('<int:year>/<str:month>/', views.home, name='byyearmonth'),
]

模板:

<li class="nav-item">
  <a class="nav-link" href="% url 'byyearmonth' '2021' 'November' %">November</a>
</li>

【讨论】:

【参考方案2】:

您的 URLconf 似乎没有指定您的两个参数(正确)。它应该看起来像这样:

from django.urls import path

from . import views

urlpatterns = [
    path('/<int:year>/<str:month>/', views.home, name='home'),
]

【讨论】:

以上是关于为啥我的 django 模板无法识别我在 views.py 文件中设置的 url 参数?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我在 django 教程中收到此模板错误?

Jinja2 设置块在 Django 中无法识别

Python Django 无法在一个模板中显示两个表单

为啥 Django 模板不能从对象字段中识别列表?

无法加载 Django 模板

我在 django 模板中显示数据库数据时找不到错误