我是Django框架的新手。 我有一个模板,显示数据库中所有对象的列表。单击列表中的任何对象时,应重定向到另一个页面,该页面显示该特定对象的对象详细信息。 目前,我已经能够获取数据库中的对象列表,但无法将对象ID转发到下一个模板。
这是我的views.py
def homepage(request):
context = {}
items = AddInv.objects.all()
return render(request, "selly/homepage.html", {'items': items})
def item(request, item_id):
context = {}
each_item = AddInv.objects.get(pk=item_id)
return render(request, "selly/item.html", {'each_item':each_item})
这是显示所有对象的模板
<div>
{% for product in items %}
<form method="POST" action="/selly/item/{{product.pk}}" item_id="{{product.pk}}">
{% csrf_token %}
<td>
<p><a href="/selly/item/"><img src="{{product.docfile.url}}" class="img-circle" width="150" height="150" align="middle"></img></a></p>
<br>* Description is : {{product.description}}
<br>* Price is : {{product.price}}
<br>* Quantity is : {{product.quantity}}
<br>* Sold is : {{product.sold}}
<br>* Total Paypent is : {{product.total_payments}}
<br>* Item Remaining is : {{product.item_remaining}}
<p>{{product.id}}</p>
<br>
<br>
</td>
</form>
{% endfor %}
</div>
以下是显示已点击对象详细信息的模板
<form method="POST" action="/selly/item/" item_id="{{product.pk}}">
{% csrf_token %}
<p><a href="/selly/item/"><img src="{{product.docfile.url}}" class="img-circle" width="150" height="150" align="middle"></img></a></p>
<p>Description is : {{product.description}}</p>
<p>Price is : {{product.price}}</p>
<p>Sold is : {{product.sold}}</p>
<p>Item Remaining is : {{product.item_remaining}}</p>
<p>Quantity is : <input type="number" default="0"></p>
<br>
<input type="submit" class="btn btn-primary" value="Add to Cart">
</form>
答案 0 :(得分:0)
如果您需要重定向,则不需要表单,只需为详细信息页面(您已经拥有item()
)定义一个网址,并设置指向该页面的链接您的列表视图(homepage()
):
<div>
{% for product in items %}
<td>
<p><a href="/selly/item/{{ product.pk }}"><img src="{{product.docfile.url}}" class="img-circle" width="150" height="150" align="middle"></img></a></p>
<br>* Description is : {{product.description}}
<br>* Price is : {{product.price}}
<br>* Quantity is : {{product.quantity}}
<br>* Sold is : {{product.sold}}
<br>* Total Paypent is : {{product.total_payments}}
<br>* Item Remaining is : {{product.item_remaining}}
<p>{{product.id}}</p>
<br>
<br>
</td>
{% endfor %}
</div>
Django doc有very detailed example你应该遵循。它解释了你应该知道的一切。
答案 1 :(得分:0)
在这种情况下,我不会使用表单(只是链接列表),但这不是问题。
对于每个产品细节,我会定义新的视图功能,如:
def item_detail(request,item_id):
return render(request, "some_template.html")
所以产品细节的模板应该是:
<form method="POST" action="/selly/item_detail/{{each_item.id}}" item_id="{{each_item.id}}">
{% csrf_token %}
<p><a href="/selly/item_detail/{{each_item.id}}"><img src="{{product.docfile.url}}" class="img-circle" width="150" height="150" align="middle"></img></a></p>
<p>Description is : {{product.description}}</p>
<p>Price is : {{product.price}}</p>
<p>Sold is : {{product.sold}}</p>
<p>Item Remaining is : {{product.item_remaining}}</p>
<p>Quantity is : <input type="number" default="0"></p>
<br>
<input type="submit" class="btn btn-primary" value="Add to Cart">
</form>
所以,试试吧。
答案 2 :(得分:0)
使用锚元素和项目详细信息作为href(最佳做法是使用django url标记)。还要确保项目详细信息url允许名为item_id的参数。
<div>
{% for product in items %}
<a href="/selly/item/{{product.pk}}">
<p><a href="/selly/item/"><img src="{{product.docfile.url}}" class="img-circle" width="150" height="150" align="middle"></img></a></p>
<br>* Description is : {{product.description}}
<br>* Price is : {{product.price}}
<br>* Quantity is : {{product.quantity}}
<br>* Sold is : {{product.sold}}
<br>* Total Paypent is : {{product.total_payments}}
<br>* Item Remaining is : {{product.item_remaining}}
<p>{{product.id}}</p>
<br>
<br>
</a>
{% endfor %}
</div>