1
我有一個問題,當有人在我的搜索框(對應於'搜索'視圖)做一個搜索。 「搜索」一詞正在被「搜索類別」視圖拾取,並嘗試使用「搜索」這個詞來運行查詢來代替匹配。我想我可以看到它爲什麼會發生 - 實質上,搜索和search_category視圖都在我的url後查找一個詞。我只是困惑,爲什麼實際的意見沒有得到拾取和URL的混合起來?下面是我的看法,以及:儘管具體視圖Django的URL衝突
我的URL模式
urlpatterns = [
url(r'^(?P<letter>[a-zA-Z])/$', views.mineral_letter, name='letter'),
url(r'^(?P<category>[a-zA-Z\s]+)/$', views.search_category, name='category'),
url(r'^$', views.mineral_list, name='list'),
url(r'^(?P<pk>\d+)/$', views.mineral_detail, name='detail'),
url(r'^search/$', views.search, name='search'),
]
我的看法:
def mineral_list(request):
minerals = Mineral.objects.all()
return render(request, 'minerals/mineral_list.html', {'minerals': minerals})
def mineral_detail(request, pk):
mineral = Mineral.objects.get(pk=pk)
return render(request, 'minerals/mineral_detail.html', {'mineral': mineral})
def mineral_letter(request, letter):
minerals = Mineral.objects.filter(name__istartswith=letter.lower())
return render(request, 'minerals/mineral_list.html', {'minerals': minerals, 'active_letter':letter})
def search(request):
term = request.GET.get("q")
minerals = Mineral.objects.filter(name__icontains=term)
return render(request, 'minerals/mineral_list.html', {'minerals': minerals})
def search_category(request,category):
minerals = Mineral.objects.filter(category__icontains=category)
return render(request,'minerals/mineral_list.html', {'minerals':minerals})
不是Django的親,但移動上面的搜索視圖類別視圖可能會修復它。我認爲,因爲他們是相反的類別被選中與「搜索」一詞類別。 –
你釘了它。謝謝! (仍然困惑爲什麼這應該工作,但我會去用它!) –
它很重要,因爲它停止後,它發現一個匹配,所以它從來沒有實際上使它到搜索視圖。這很有意義,如果你仔細想想,一個url必須匹配一個視圖,否則它會模糊不清,django迫使你避免這種問題。 –