gpt4 book ai didi

python - 如何让我的搜索功能在所有页面都可用?

转载 作者:太空宇宙 更新时间:2023-11-04 05:38:20 24 4
gpt4 key购买 nike

我的 views.py 中有这段代码

class BlogListView(ListView):
model = Blog
template_name = "blog/blog_list.html"
paginate_by = 5
queryset = Blog.objects.order_by('-created_on')

def get_context_data(self,*args,**kwargs):
context = super(BlogListView,self).get_context_data(*args,**kwargs)
#filters = Blog.objects.order_by('-created_on')
#context["filters"] = filters
#context ['categories'] = Category.objects.all()
return context
def get_queryset(self,*args,**kwargs):
qs = super(BlogListView,self).get_queryset(*args,**kwargs)
query = self.request.GET.get("q")
if query:
qs=self.model.objects.filter(
Q(title__icontains=query)
)
return qs

在我的模板 blog/base.html 中

<form class="navbar-form navbar-right" method="GET" role="search">
<div class="form-group">
<input type="text" class="form-control" placeholder="Search" name="q"/>
</div>
</form>

它只适用于一个 blog_list.html 页面!如何在所有模板页面中访问我的搜索功能?

最佳答案

只有博客 ListView 知道如何处理您的搜索请求,因此您需要告诉表单将​​请求发送到该 url。您可以通过向表单添加 action 属性来实现。例如,如果您的博客 ListView 在 /blog/ 可用,那么您可以:

<form class="navbar-form navbar-right" method="GET" action="/blog/" role="search">

如果您已命名博客列表 url 模式,则可以使用 {% url %} 标记,以避免对 url 进行硬编码。例如,如果博客列表 url 模式的名称是 blog_list,您可以:

<form class="navbar-form navbar-right" method="GET" action="{% url 'blog_list' %}" role="search">

关于python - 如何让我的搜索功能在所有页面都可用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34898760/

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