在电子商务商店工作。我创建了分类功能,可以显示具有特定类别的项目。
一切正常,但我也想在/category/
之后显示类别名称。
我尝试了GET方法,但出现错误。你有空吗?按钮中的值为类别。
模板中的表单
<form method='post' action='/category/' class="form-inline">
{% csrf_token %}
</li>
<li class="nav-item">
<button class="nav-link purple darken-4" type="submit" name="S" value="S" style="background-color: grey;">Shirts</button>
</li>
<li class="nav-item">
<button class="nav-link purple darken-4" type="submit" name="S" value="O" style="background-color: grey;">Outwear</button>
</li>
<li class="nav-item">
<button class="nav-link purple darken-4" type="submit" name="S" value="SW" style="background-color: grey;">Sportwear</button>
</li>
</form>
观看次数:
def category(request):
if request.method=="POST":
if request.POST.get('S', False):
s = request.POST['S']
objects_display = Item.objects.filter(category=s)
if objects_display.exists():
context ={
"objects": objects_display
}
return render(request, "shop/categories.html", context)
else:
messages.warning(request, 'no items found')
return redirect('item-list')
URL:
path('category/', category, name='category'),
答案 0 :(得分:0)
您应该使用“ a”代替表格 模板
<li class="nav-item">
<a class="nav-link purple darken-4" href="{% url 'category' category_name='s' %} style="background-color: grey;">Shirts</a>
</li> (and others)
url
url(r'^category/(?P<category_name>\w+)/$', views.category, name="category"),
观看次数
def category(request, category_name):
objects_display = Item.objects.filter(category=category_name)
if objects_display.exists():
context ={
"objects": objects_display
}
return render(request, "shop/categories.html", context)
else:
messages.warning(request, 'no items found')
return redirect('item-list')
答案 1 :(得分:0)
使用动态URL,您可以轻松,在URL中传递category_name参数并在视图中进行访问,并基于参数值进行查询(如果该参数不存在,则可以提供所有项目,也可以将消息显示为空
url
path('category/', category, name='category'),
re_path('category/(?P<category_name>[0-9,a-z,A-Z]+)', category, name='category'),
观看次数
def category(request, category_name=None):
if category_name:
objects_display = Item.objects.filter(category=category_name)
else:
objects_display = Item.objects.all()
context ={
"objects": objects_display
}
return render(request, "shop/categories.html", context)
您也可以动态执行类别,您可以创建类别模型,并在每次可以在上下文中传递所有类别对象并在类别对象上编写for循环时在视图中添加forainkey,而在内部循环中可以编写HTML li标签,因此它将完全动态化
HTML
<li class="nav-item">
<a class="nav-link purple darken-4" href="{% url 'category' category_name='category name' %} style="background-color: grey;">Shirts</a>
</li>