【问题标题】:Pass a value from view.py to a url link in html将 view.py 中的值传递给 html 中的 url 链接
【发布时间】:2021-06-13 01:42:15
【问题描述】:

我正在学习 Django 的 CS50 Web 开发。

我想将 view.py 中的字符串作为 URL 链接传递给 HTML

这里是view.py

def randompage(request, name):
random_page = random.choice(util.list_entries())
return render(request, "encyclopedia/layout.html", {
"random_page": random_page})

这是 HTML 页面

<a href="{% url 'randompage' random_page %}"> Random Page </a>

urls.py

urlpatterns = [
path("", views.index, name="index"),
path("wiki/<str:name>", views.title, name= "title"),
path("wiki/", views.randompage, name= "randompage"),
path("searchresult", views.searchresult, name= "searchresult"),
path("newpage", views.newpage, name= "newpage")

]

错误代码是

NoReverseMatch 在 / 未找到参数“(”,)”的“随机页”反向。尝试了 1 种模式:['wiki/$']

我知道我会给你模板标签 URL,但我不太明白它是如何工作的,我找不到任何人和我有类似情况的人。

【问题讨论】:

  • 请显示您的 urls.py 文件代码
  • 已更新我正在处理 layout.html,因此它不包含在 url 中

标签: html django cs50


【解决方案1】:

您可以在 HTML 模板中使用以下内容:

<a href="{% url 'title' randompage %}"> Random Page </a>
  • title 是您的 urls.py 中的路径名
  • randompage是参数

这里是relevant section of the Django docs

【讨论】:

  • 如果我想去的路径是“wiki/”,我应该写&lt;a href={% url 'wiki/' randompage %}&gt; Random Page &lt;/a&gt;
  • @VicentLHKROT 不,那行不通。 {% url %} 标签需要 URL Pattern Name 作为第一个参数。 title 是您在 urls.py 文件中为该 URL 模式指定的名称。
  • @VicentLHKROT 刚刚更新了我的答案。我忘记了 url 标记周围的引号。
  • 这次我用&lt;a href="{% url 'title' randompage %}"&gt; Random Page &lt;/a&gt;代替了它,但是出现了错误代码django.urls.exceptions.NoReverseMatch: Reverse for 'title' with arguments '('',)' not found. 1 pattern(s) tried: ['wiki/(?P&lt;name&gt;[^/]+)$']。我应该为 randompage 返回一个字符串
  • @VicentLHKROT 如果仍有问题,请检查模板中randompage 的内容。
猜你喜欢
  • 2013-05-25
  • 2020-07-17
  • 2021-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-26
  • 2016-08-26
相关资源
最近更新 更多