Python Django滤波器模型的第一个字母
我有一个问题,我不知道如何解决它。我得到了这个生成/list/a,b,c等的模板,我想在这个a,b,c url模型中显示相同的字母 列表模板Python Django滤波器模型的第一个字母,python,django,Python,Django,我有一个问题,我不知道如何解决它。我得到了这个生成/list/a,b,c等的模板,我想在这个a,b,c url模型中显示相同的字母 列表模板 <div class="panel-body anime-list text-center"> <div class="btn-group btn-group-xs"> {% for i in alphabet %} <a href="{{i}}" class="btn">
<div class="panel-body anime-list text-center">
<div class="btn-group btn-group-xs">
{% for i in alphabet %}
<a href="{{i}}" class="btn">{{i}}</a>
{%endfor%}
</div>
</div>
如何在您的模板中的另一个所需模板中筛选该模板,请执行以下操作:
<a href="{% url 'list_view' letter=i %}" class="btn">{{i}}</a>
你的看法:
def list_view(request, letter=None):
matches = Anime.objects.all().order_by("title").filter(Q(title__startswith=letter)|Q(title__startswith=letter.upper()))
return render(request, "your_app/your_template.html", {"matches": matches}
在模板标记模块中,应定义以下简单标记:
from django import template
register = template.Library()
@register.simple_tag
def filterAnime(char):
return Anime.objects.filter(title__startswith=char)
然后,您可以在模板中使用此标记,如下所示:
{% load my_tags %}
<div class="panel-body anime-list text-center">
<div class="btn-group btn-group-xs">
{% for i in alphabet %}
<a href="{{i}}" class="btn">{{i}}</a>
{%filterAnime i as filterdObjs%}
//do what ever you want
{%endfor%}
</div>
</div>
{%load my_tags%}
{字母表%中的i的百分比}
{%FilterName i作为FilterObjs%}
//你想干什么就干什么
{%endfor%}
检查此解决方案后,仍然没有解决问题。我忘了显示我的views.py是什么样子,我认为ascii_大写字母是个问题,是真的吗
from django.shortcuts import render
import string
from home.models import Anime
alphabet = string.ascii_uppercase
def list(request):
context = {'alphabet': alphabet}
return render(request, 'list/list.html', context)
def list_detail(request):
anime = Anime.objects.all().filter(title__startswith=alphabet)
context = {'anime': anime}
return render(request, 'list/detail.html', context)
像这样,您需要在URL.py中提到这一点只是为了澄清:您想显示一个
Anime
数据库对象的列表,按字母顺序排序,对吗?例如,我想之后…/list/W只显示以W字母开头的Anime对象,如果我理解正确。请注意:如果您想澄清您的问题,您应该编辑它,而不是添加新答案。回到你的问题上来。string.ascii_大写返回所有大写字母,您应该从请求对象读取目标后者,例如作为查询字符串或其他。然后,您应该按照如下方式过滤动画对象:(title\uu startswith=latterReadFromRequest)
{% load my_tags %}
<div class="panel-body anime-list text-center">
<div class="btn-group btn-group-xs">
{% for i in alphabet %}
<a href="{{i}}" class="btn">{{i}}</a>
{%filterAnime i as filterdObjs%}
//do what ever you want
{%endfor%}
</div>
</div>
from django.shortcuts import render
import string
from home.models import Anime
alphabet = string.ascii_uppercase
def list(request):
context = {'alphabet': alphabet}
return render(request, 'list/list.html', context)
def list_detail(request):
anime = Anime.objects.all().filter(title__startswith=alphabet)
context = {'anime': anime}
return render(request, 'list/detail.html', context)