Python 在Django中创建类似标记的特性
我是Django的新手,正在尝试找出为我的对象的类别创建URL的代码。它的工作方式现在我为每个类别都有一个URL,但我正在尝试创建一个快捷方式,这样如果我创建更多的类别,我就不必再向URL.py添加另一个URL 模型:Python 在Django中创建类似标记的特性,python,django,tags,categories,Python,Django,Tags,Categories,我是Django的新手,正在尝试找出为我的对象的类别创建URL的代码。它的工作方式现在我为每个类别都有一个URL,但我正在尝试创建一个快捷方式,这样如果我创建更多的类别,我就不必再向URL.py添加另一个URL 模型: class Store(models.Model): FOOTWEAR = "Footwear" CLOTHING = "Clothing" OUTERWEAR = "Outerwear" ITEM_CATEGORY_CHOICE = (
class Store(models.Model):
FOOTWEAR = "Footwear"
CLOTHING = "Clothing"
OUTERWEAR = "Outerwear"
ITEM_CATEGORY_CHOICE = (
(FOOTWEAR, 'Footwear'),
(CLOTHING, 'Clothing'),
(OUTERWEAR, 'Outerwear'),
)
category = models.CharField(
max_length=20,
choices=ITEM_CATEGORY_CHOICE,
null=True,)
之前,我有一个每个类别的url。我能够为特定类别设置URL:
url(r'^category/(?P<category>[-\w]+)/$',
'collection.views.specific_category',
name="specific_category"),
现在代码保持原样,页面将打开为空白。我觉得答案就在我面前,我看不出来。我的模型错了吗?如果您能为我提供任何有关解释的参考资料,我将不胜感激。您应该创建一个html文件,查找通用上下文变量,例如: category_items.html
Category:
{{ category }}
Items:
{{ for item in items }}
{{ item.name }}
{{ endfor }}
这样,无论您在视图中过滤什么,您仍然可以使用相同的html页面显示结果。另外,将category='.\u'
更改为category=category
,这样它将从url中捕获类别名称
views.py
def specific_category(request, category):
if category:
sneakers = Sneaker.objects.filter(category=category).order_by('-date')
else:
sneakers = Sneaker.objects.all().order_by('-date')
return render(request, 'category_items.html', {'category': category, 'items': sneakers})
您没有为视图代码返回任何内容,它将如何工作?我知道这一点。但在视图中返回“鞋类”将返回鞋类,无论我在URL中使用什么类别。如何返回视图中的所有类别,以便手动键入URL中显示的任何类别?抱歉,我不明白您试图使用视图方法做什么。您的视图必须返回内容(实际上,完整的http响应,而不仅仅是内容),它不指向任何地方。如果你不返回内容,你会得到一个空页面。我想这是我的问题。如何将返回指向所有类别?因此,如果我想手动键入“\uuuuu/类别/服装”,该网站将返回所有带有服装类别的物品?
def specific_category(request, category):
if category:
sneakers = Sneaker.objects.filter(category=category).order_by('-date')
else:
sneakers = Sneaker.objects.all().order_by('-date')
return render(request, 'category_items.html', {'category': category, 'items': sneakers})