我正在尝试为我的网站的矿物显示导航菜单。导航栏将显示可用矿物类别的列表。点击“类别”的用户将看到该类别中每种矿物的列表。在Django中筛选项目组并显示组的列表
我试图通过模板标签来完成,但没有打印和Django的调试栏中我看不到执行的SQL - 所以不知道是什么问题。
我矿物模型
class Mineral(models.Model):
name = models.CharField(max_length=100, unique=True)
image_filename = models.CharField(max_length=255)
image_caption = models.CharField(max_length=255)
category = models.CharField(max_length=255)
formula = models.CharField(max_length=255)
strunz_classification = models.CharField(max_length=255)
crystal_system = models.CharField(max_length=255)
unit_cell = models.CharField(max_length=255)
color = models.CharField(max_length=255)
crystal_symmetry = models.CharField(max_length=255)
cleavage = models.CharField(max_length=255)
mohs_scale_hardness = models.CharField(max_length=255)
luster = models.CharField(max_length=255)
streak = models.CharField(max_length=255)
diaphaneity = models.CharField(max_length=255)
optical_properties = models.CharField(max_length=255)
refractive_index = models.CharField(max_length=755)
crystal_habit = models.CharField(max_length=255)
specific_gravity = models.CharField(max_length=255)
我的模板标签
from django import template
register = template.Library()
categories = ["Silicates", "Oxides", "Sulfates", "Sulfides", "Carbonates", "Halides", "Sulfosalts", "Phosphates",
"Borates", "Organic Minerals", "Arsenates", "Native Elements", "Other"]
@register.inclusion_tag('minerals/mineral_nav.html')
def nav_minerals_list():
return {'categories': categories}
mineral_nav.html
{% for category in categories %}
<a href="{% url 'minerals:category' category=category%}">{{ category }}</a>
{% endfor %}
类URL
url(r'^(?P<category>[\w\s]+)/$', views.search_category, name='category')
search_category视图
def search_category(request,category):
minerals = Mineral.objects.filter(category__iexact=category)
return render(request,'minerals/mineral_list.html', {'minerals':minerals})
,然后只是想调用菜单在我的主页是这样的:
{%nav_minerals_list%}
记下我也绝对导入模板标签在我的HTML页面。
有什么想法?
更新 - 我固定的模板标签,但我发现了以下错误:
NoReverseMatch at/
Reverse for 'category' with arguments '()' and keyword arguments '{}' not found. 1 pattern(s) tried: ['minerals/(?P<category>[a-zA-Z])/$']
更新2 -I've改变了代码张望了一下是什么,我相信会好一点表单,但我仍然收到一个新的反向匹配错误。错误如下:
NoReverseMatch at/
Reverse for 'category' with arguments '()' and keyword arguments '{'category': 'Silicates'}' not found. 1 pattern(s) tried: ['minerals/(?P<category>[a-zA-Z])/$']
所以猜猜它是拾取类别名称之一,但仍不知道为什么这不起作用的一个好兆头。有任何想法吗?
UPDATE 3 注意到我的REGEX出现了问题,导致URL发生了改变。我现在有种类打印出正确的链接,使他们将正确的网址 - 即(http://localhost:8000/minerals/Silicates/),但矿物质该类别列表中没有打印出
是你的权利woops,我仍然得到一个错误:反转找不到参数'()'和关键字参数'{}'的'category'。 1个模式尝试:['矿物/(?P [a-zA-Z])/ $'] –
我将更新代码与该视图 –