【问题标题】:Passing id in url to get object info在 url 中传递 id 以获取对象信息
【发布时间】:2021-03-05 16:44:27
【问题描述】:

我花了 3 天的时间试图找到解决这个问题的方法。 我有一个带有项目的仪表板,每个项目都称为板。 仪表板填充了我存储在本地数据库中的对象(板)。该板的名称等数据显示在名为dashboard的html页面中。

我想要做的是,当我点击名为“Scopri di più”的链接时,将在 board.html 中重定向,并填充点击的项目数据。

当时我只收到错误“NoReverseMatch”。

我做错了什么?

【问题讨论】:

  • 一直在考虑这个问题,但是您能检查一下路径是否正确包含在根 urlpatterns 中吗?你能告诉我们模板中生成的 url 是什么,或者当你点击 url 时。
  • 刚发现这个问题,stackoverflow.com/questions/38390177/…,很有帮助。
  • @Blackeagle52 感谢您的回答。生成的 url 类似于 board/idboard,其中 id 是主键。路径正确包含在根 urlpatterns 中是什么意思?寻找我添加的答案包括使用命名空间和 url_pattern = appname 或类似的东西。没有任何改变
  • 我终于看到了! {% url 'board_view' pk=board.id %},在您的网址中,board 不是变量,bn 是。当我输入这个时,答案就出现了。
  • 能否将生成的 HTML 代码添加到您的问题中?

标签: python django dashboard


【解决方案1】:

<a href="{% url 'board_view' pk=board.id %}">Scopri di più</a> 中有错误的循环变量名,应该有 <a href="{% url 'board_view' pk=bn.id %}">Scopri di più</a>。您的循环变量名称是 bn 而不是 board。而且,幕后发生的事情是,当 Django 发现不存在的变量时,模板系统会插入引擎的 string_if_invalid 配置选项的值,该选项设置为 ''(空字符串)。而且,由于您的path 仅为int 参数定义了url,因此找不到带有String 参数的url。

【讨论】:

  • 谢谢你的回答,你说得对,我忘记改了。不幸的是我仍然有同样的问题:没有找到关键字参数'{'pk':''}'的'board_view'的反向。尝试了 1 种模式:['board/(?P[0-9]+)$']
  • 你能在你使用{% url ... %}标签的地方分享模板sn-p吗?还有path定义urls.py?
  • getbootstrap.com/docs/4.0/examples/album 是我正在使用的模板
  • 我认为问题出在 url 标签 {% url 'board_view' id=some_variable %} 中的未定义变量,如果 some_variable 未在上下文中定义/提供,则默认为空字符串,因此未找到与 @987654334 匹配的结尾@,通过定义<int:id>,要求参数是int。因此,您必须注意在模板中将什么参数传递给您的 url 标签。
  • 您也可以通过暂时删除url标签来检查变量是否正常,并添加一些调试文本,例如id : "{{ your_variable_which_is_passed_to_url_tag }}",然后查看输出内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-22
  • 2012-09-12
相关资源
最近更新 更多