gpt4 book ai didi

python - 尽管有特定 View ,Django URL 冲突

转载 作者:行者123 更新时间:2023-12-01 02:55:30 25 4
gpt4 key购买 nike

当有人在我的搜索框(对应于“搜索” View )中进行搜索时,我遇到了问题。 “search_category” View 获取“search”一词,并尝试使用“search”一词来运行查询来进行匹配。我想我能明白为什么会发生这种情况——本质上,搜索和 search_category View 都在我的网址后面寻找单词。我只是很困惑为什么实际 View 没有被获取并且 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})

最佳答案

尝试这个顺序:

urlpatterns = [
url(r'^$', views.mineral_list, name='list'),
url(r'^search/$', views.search, name='search'),
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'^(?P<pk>\d+)/$', views.mineral_detail, name='detail'),
]

关于python - 尽管有特定 View ,Django URL 冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44243727/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com