我有三个页面 - 主页http://127.0.0.1:8000/,在标题中显示一个段落句子和两个链接。和比萨列表,http://127.0.0.1:8000/pizzas。现在我正在尝试在http://127.0.0.1:8000/pizzas页面上为每个披萨添加链接,以便可以点击它们并查看可用的配件。我可能会因为我决定使用路径而不是url()来映射网址而感到困惑,这是我以后使用的书。
错误:/ pizzas的NoReverseMatch 反向' pizza_w_toppings'未找到。 ' pizza_w_toppings'不是有效的视图函数或模式名称。
pizzas.html -
{% extends "pizzeria_app/base.html" %}
{% block content %}
<h1> Available Pizzas : </h1>
<ul>
{% for pizza in pizzas %}
<li> <a href = {% url 'pizza_w_toppings' %}> {{pizza}}</a><li>
{% empty %}
<p> We're outta Pizzas. next time bro! <p>
{% endfor %}
</ul>
{% endblock content %}
&#13;
app / urls.py:
urlpatterns = [
#homepage
path('', views.index),
#show available pizzas
path('pizzas', views.pizzas),
path('pizzas/<int:pizza_id>', views.pizza_w_toppings, name="pizza_w_toppings")
查看: 我是StackOverflow的新手,无法弄清楚如何添加我的views.py。我附了一张照片,对不起 views.py screenshot
答案 0 :(得分:1)
您的网址标记应为{% url 'pizza_w_toppings' pizza.id %}
。如果您查看documentation,则会看到所有可能的网址标记变体。
例如,假设您有一个视图app_views.client,其URLconf 获取客户端ID(此处,client()是视图文件中的方法 app_views.py)。 URLconf行可能如下所示:
path('client/<int:id>/', app_views.client, name='app-views-client')
如果此应用程序的URLconf包含在项目的URLconf下 这样的道路:
path('clients/', include('project_name.app_name.urls'))
...然后,在模板中,您可以创建一个指向此视图的链接:
{% url 'app-views-client' client.id %}
模板标签将输出字符串/ clients / client / 123 /.
如果您使用名称空间,请确保在您的网址标记中包含名称空间,如下所示:
{% url 'your-namespace:app-views-client' client.id %}