当我单击主页上的搜索时,我希望它采用该查询集,例如(let res = {
start: {},
end: {}
};
[res.start.hour, res.start.minute] = [7, 20][(res.end.hour, res.end.minute)] = [
17,
30
];
console.log(res);
),然后在搜索视图中使用相同的URL。我曾尝试搜索,但找不到任何有效的方法。
观看次数:
http://127.0.0.1:8000/?q=car
URL:
class IndexView(ListView):
model = Post
# queryset = Post.objects.filter(live=True)
template_name = "public/index.html"
def get_queryset(self):
queryset = super().get_queryset().filter(live=True)
query = self.request.GET.get("q")
if query:
queryset = queryset.filter(title__icontains=query)
return redirect(reverse('search-view'), queryset)
def get_context_data(self, **kwargs):
context = super(IndexView, self).get_context_data(**kwargs)
context['queryset'] = self.get_queryset()
context['category'] = Category.objects.all()
return context
我尝试使用重定向和反向操作来执行此操作,但是它根本不起作用,实际上给我一个在使用queryset的forloop上使用slice的错误。 urlpatterns = [
path('', views.IndexView.as_view(), name="index-view"),
path('post/create/', views.PostCreateView.as_view(), name="post-create"),
path('post/<slug>/update/', views.PostUpdateView.as_view(), name="post-update"),
path('post/<slug>/', views.PostDetailView.as_view(), name="post-detail"),
path('category/', views.CategoryView.as_view(), name="category"),
path('category/<int:pk>/', views.CategoryDetailView.as_view(), name="category-detail"),
path('search/', views.SearchListView.as_view(), name="search-view")
]
我有2个模板/视图。当我单击主页上的搜索时,我希望它继续到搜索视图,然后在该视图上运行搜索查询。
谢谢。
答案 0 :(得分:0)
我认为您在实际执行查询的位置上混淆了一些逻辑。您不应在IndexView
专用的SearchListView
中进行实际的查询搜索。
根据目前可用的信息(无SearchListView
),我想您可以进行重定向并将参数传递到查询url上,然后让SearchListView
中的视图决定要做什么信息:
def get_queryset(self):
queryset = super().get_queryset().filter(live=True)
query = self.request.GET.get("q")
if query:
# Fetch the url for the search-view
base_url = reverse('search-view')
# Make the search query url encoded
query_string = urlencode({'q': query})
# Tie it together with the url
url = '{}?{}'.format(base_url, query_string)
# Fire away
return redirect(url)
return redirect(reverse('search-view'), queryset)
来源: The Ultimate Guide to Django Redirects
摘自Daniel Hepper的一些代码