我堅持從 html 頁面的 for 回圈中獲取值。
這是我的設定:用戶有一個使用自動完成功能的輸入欄位。此函式使用 Django 中的 shop-Model。提交后,商品會被添加到Django中的Shopping_List-Model中。它將顯示在頁面的另一個 div 中。這是目前作業沒有問題。
每個產品都在表格的一行中,包括一個從購物清單中洗掉產品的按鈕。這樣的按鈕正在作業。我試圖在單擊按鈕時列印出一些東西。但我無法從表行中獲取值,即產品名稱。它總是不回傳任何內容。使用該值,我想從購物清單中洗掉該產品。
非常感謝任何建議!
這是我的代碼:
HTML
<div>
<!--Input field and autocomplete-->
<form id="product_add" action="{% url 'shop' %}" method="post">
{% csrf_token %}
<input type="text" name="shop_product" id="shop_product">
<!--Code for autocomplete-->
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script>
$(function () {
$("#shop_product").autocomplete({
source: "{% url 'shop' %}",
minLength: 2
});
});
</script>
<input type="submit" name="button_add" value="Add">
</form>
</div>
<div>
<table>
{% for item in items %}
<tr>
<form id="shop_delete" action="{% url 'shop_delete' %}" method="post">
<td name="product" id="product">{{ item.product }}</td>
<td><button type="submit" name="delete">X</button></td>
</form>
</tr>
{% endfor %}
</table>
</div>
視圖.py
def shop(request):
if request.method == "POST":
if request.POST["button_add"] == "Add":
user = request.user
product = request.POST["shop_product"]
date=datetime.date.today()
if product != "": Shopping_List.objects.create(user=user, date=date, product=product)
else:
print("delete")
if 'term' in request.GET:
qs = Shop.objects.filter(product__icontains=request.GET.get('term'))
items = list()
for product in qs:
items.append(product.product)
# titles = [product.title for product in qs]
return JsonResponse(items, safe=False)
items = Shopping_List.objects.all().filter(user=request.user, date=datetime.date.today())
return render(request, "shop.html", {
"items": items
})
def shop_delete(request):
if request.method == "POST":
product = request.POST.get("product")
print(product)
return redirect('shop')
uj5u.com熱心網友回復:
您的表單不包含任何輸入,因此不會隨 POST 請求提交任何輸入資料。
#This is not an input
<td name="product" id="product">{{ item.product }}</td>
當您使用有效的表單輸入時,您將能夠在視圖中檢索產品名稱。
例如,您可以添加帶有產品名稱的隱藏欄位。那么你就不需要重新設計你的表格元素。
<form id="shop_delete" action="{% url 'shop_delete' %}" method="post">
<td id="product">{{ item.product }}</td>
<input type="hidden" value="{{item.product}}" name="product">
<td><button type="submit" name="delete">X</button></td>
</form>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/365352.html
