【问题标题】:Passing a list through <a href = "{% url 'list_item' %}"> in django在 django 中通过 <a href = "{% url 'list_item' %}"> 传递一个列表
【发布时间】:2020-12-02 02:07:54
【问题描述】:

我必须添加指向页面主体中列出的列表项的链接,以将用户重定向到列表项所代表的页面。列表项是从 views.py 中的一个函数获取的,该函数从另一个名为 util.py 的文件中获取列表项。但是,我不明白如何在迭代列表项时添加这些超链接,即我写为&lt;a href = "{% url '....' %}"&gt; 的部分。 这是 index.html 的代码,该页面将显示列表项和超链接:

{% extends "encyclopedia/layout.html" %}

{% block title %}
    Encyclopedia
{% endblock %}

{% block body %}
    <h1>All Pages</h1>

    <ul>
        {% for entry in entries %}
            <li><a href = "{% url '....' %}">{{ entry }}</a></li>
        {% endfor %}
    </ul>

{% endblock %}

这是从 util.py 中获取列表并将其存储在名为 entries 的列表中的函数:

from django.shortcuts import render

from . import util


def index(request):
    return render(request, "encyclopedia/index.html", {
        "entries": util.list_entries()
    })

这是 util.py 中的原始函数,它将列表返回到 views.py 中的 index 函数。

def list_entries():
    """
    Returns a list of all names of encyclopedia entries.
    """
    _, filenames = default_storage.listdir("entries")
    return list(sorted(re.sub(r"\.md$", "", filename)
                for filename in filenames if filename.endswith(".md")))

这是 urls.py 文件:

from django.urls import path

from . import views
app_name = "wiki"
urlpatterns = [
    path("", views.index, name="index"),
    path("<str:TITLE>", views.entry_page, name="entry_page")
]

【问题讨论】:

    标签: python django


    【解决方案1】:

    这应该可行。没有?

    <li><a href ="/{{entry}}/">{{ entry }}</a></li>
    

    【讨论】:

    • 当我这样做时给出这个错误:TemplateSyntaxError at / Could not parse the remainder: '/{{entry}}/' from '/{{entry}}/'
    【解决方案2】:

    我几乎放弃了这个项目,因为这个错误不允许我继续这个项目,我不想花更多的时间来寻找这个问题的解决方案。但是,今天我决定给它最后一击,并找到了解决方案! 所以主要错误在 urls.py 中。由于列表中的项目不断变化,路径应该是动态的,所以它的名称字段也应该是一个变量。但是,我给了它一个静态名称。这就是我所说的:path("&lt;str:TITLE&gt;", views.entry_page, name="entry_page") 名称设置为entry_page,它只是一个字符串。它应该被命名为TITLE,而不是我在整个代码中用于条目的变量。因此,修改将是 urls.py 中的 path("&lt;str:TITLE&gt;", views.entry_page, name="TITLE") 和 index.html 中的 &lt;li&gt;&lt;a href = "{% url 'wiki:TITLE' TITLE=entry %}"&gt;{{ entry }}&lt;/a&gt;&lt;/li&gt;。

    【讨论】:

      猜你喜欢
      • 2016-05-30
      • 2017-12-03
      • 1970-01-01
      • 2021-02-26
      • 2015-05-11
      • 1970-01-01
      • 1970-01-01
      • 2013-08-21
      • 2022-01-25
      相关资源
      最近更新 更多