我是新手,目前正在学习django,我有一个页面有一个会货:
URLS.PY
urlpatterns = [
path("productsHTML/<str:uuid>", productHTML, name = "productHTML"),
path("productsHTML/", productsHTML, name = "productsHTML")
]
VIEW.PY
def productsHTML(request):
all_products = {"products": Product.objects.all()}
return render(request, "products.html",all_products)
def productHTML(request, uuid):
product = Product.objects.get(id = uuid)
value = [product.name, product.category, product.marka, product.privod, product.loshad_sila, product.box_peredach, product.volume_dvigatel]
values = {"values": value}
return render(request, "product.html", uuid, values)
PRODUCTS.HTML
{% block content %}
<h2>Продукты</h2>
<hr>
{%if products %}
{% for product in products %}
<p><b>Категоия: </b>{{ product.category}}</p>
<p><b>Название: </b><a href="http://127.0.0.1:8000/productsHTML/{{ product.id }}">{{ product.name}}</a></p>
<p><b>Цена: Бесплатно</p>
<hr>
{% endfor %}
{% endif %}
{% endblock %}
PRODUCTS.HTML
{% extends 'products.html' %}
{% block title %}Продукт{% endblock %}
{% block content %}
{% if values %}
{% for value in values %}
<p><b>Категоия: </b>{{ value.category }}</p>
<p><b>Название: </b>{{ value.name }}</p>
<p><b>Марка: </b>{{ value.marka }}</p>
<p><b>Привод: </b>{{ value.privod }}</p>
<p><b>Лошадиные силы: </b>{{ value.loshad_sila }}</p>
<p><b>Коробка передач: </b>{{ value.box_peredach }}</p>
<p><b>Объём двигателя: </b>{{ value.volume_dvigatel }}</p>
<p><b>Цена: Бесплатно</p>
{% endfor %}
<button>КУПИТЬ</button>
{% endif %}
{% endblock %}
我需要单击产品名称中包含的链接,以重定向到地址为http://127.0.0.1:8000/productsHTML/产品ID的产品页面。如果需要,我可以提供其他信息。错误:TypeError:context必须是dict而不是string。提前感谢!
我已经为此挣扎了3天了,我试着用不同的方法传递变量到模板,但是没有用。
1条答案
按热度按时间laik7k3q1#
问题在于,您传递
uuid
作为第三个参数,但是render()
期望第三个参数是上下文字典。为什么要将
uuid
传递给render()
?模板似乎不需要它。