我創建了三個選項(主頁,更改密碼和註銷)的菜單。在家中,我顯示了存儲在數據庫中的所有書籍。現在我想使用複選框根據書籍的類別過濾內容。默認情況下,所有圖書都會在過濾分類時顯示,但只顯示該分類的圖書。但對於我來說,即使點擊所有複選框(複選框包含分類),它也會顯示所有圖書。我認爲存在一些問題在我的模板文件中。如何從django模板中定義的複選框檢索值
urls.py,
url(r'^welcome_user/$',views.welcome_user, name='welcome_user'),
Models.py,
class Add_cat(models.Model):
category = models.CharField("Name",max_length=25,unique=True)
def __unicode__(self):
return u'{0}'.format(self.category)
class Add_prod(models.Model):
book = models.CharField("Book Name",max_length=40)
author = models.CharField("Author",max_length=30)
price = models.PositiveIntegerField("Price")
image = models.ImageField(upload_to='images',null=True)
cat = models.ForeignKey(Add_cat,on_delete=models.CASCADE)
模板文件,
{% block content %}
{% load staticfiles %}
<head>
<link rel="stylesheet" href="{% static 'style.css' %}">
</head>
<body>
<div class="box">
<div class="sideNav">
<form action="{% url 'welcome_user' %}">
<p id=id3>Categories</p>
<hr>
{% for i in products %}
<input type="checkbox" name="cat_name" value="{{i.cat}}">{{i.cat}}<br>
{% endfor %}
<button type="submit">Submit</button>
</form>
</div>
<div>
{% for i in products %}
<div style="display:inline-block;margin:30px">
<img src="{{i.image.url}}" alt="No Image" width=196px height=196px>
<p id=id4>Rs.{{i.price}}</p>
</div>
{% endfor %}
</div>
</div>
</body>
{% endblock %}
Views.py,
@login_required
def welcome_user(request):
if 'cat_name' in request.GET:
filter_category = request.GET.getlist('cat_name')
my_products = Add_prod.objects.filter(cat__in=filter_category)
context = { "products":my_products}
else:
my_products = Add_prod.objects.all()
context = { "products":my_products}
return render(request,"welcome-user.html",context)
嘿模板只在點擊主菜單時纔會調用。當我點擊任何類別的模板時不會被調用 – Bhanukiran
如何做濾波器呢?你使用任何js函數嗎?你必須爲做這個過濾器做一些操作。您可以使用基於複選框選擇的js代碼執行此過濾器,或者您必須調用後端服務以獲取過濾響應。 – Anoop