我正在嘗試爲我的網站的礦物顯示導航菜單。導航欄將顯示可用礦物類別的列表。點擊「類別」的用戶將看到該類別中每種礦物的列表。在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])/ $'] –
我將更新代碼與該視圖 –