Django 我的搜索字段在我的帖子详细信息页面上不起作用
我一直在遵循一个教程,并一直在调整它一点。我在所有的网站页面上都有一个搜索字段,分别是post_列表、post_详细信息和tags_列表。post_列表和tags_列表都有分页器,其代码如下所示: 标签列表:Django 我的搜索字段在我的帖子详细信息页面上不起作用,django,Django,我一直在遵循一个教程,并一直在调整它一点。我在所有的网站页面上都有一个搜索字段,分别是post_列表、post_详细信息和tags_列表。post_列表和tags_列表都有分页器,其代码如下所示: 标签列表: def tag_list(request, slug=None): instance = get_object_or_404(Tag, slug=slug) ins = instance.post_set.all() queryset_list = Post.object
def tag_list(request, slug=None):
instance = get_object_or_404(Tag, slug=slug)
ins = instance.post_set.all()
queryset_list = Post.objects.active()
if request.user.is_staff or request.user.is_superuser:
queryset_list = Post.objects.all()
query = request.GET.get("q")
if query:
queryset_list = queryset_list.filter(
Q(title__icontains=query) |
Q(content__icontains=query) |
Q(user__first_name__icontains=query) |
Q(user__last_name__icontains=query)
).distinct()
paginator = Paginator(queryset_list, 1)
page_request_var = "tags"
page = request.GET.get(page_request_var)
try:
queryset = paginator.page(page)
except PageNotAnInteger:
queryset = paginator.page(1)
except EmptyPage:
queryset = paginator.page(paginator.num_pages)
hey = paginator.num_pages
context = {
"queryset": queryset,
"paginator": paginator,
"page_request_var": page_request_var,
"hey": hey,
"title": "posts"
}
return render(request, "posts/tag_list.html", context)
张贴清单:
def post_list(request):
today = timezone.now().date()
queryset_list = Post.objects.active()
if request.user.is_staff or request.user.is_superuser:
queryset_list = Post.objects.all()
query = request.GET.get("q")
if query:
queryset_list = queryset_list.filter(
Q(title__icontains=query) |
Q(content__icontains=query) |
Q(user__first_name__icontains=query) |
Q(user__last_name__icontains=query)
).distinct()
paginator = Paginator(queryset_list, 6)
page_request_var = "page"
page = request.GET.get(page_request_var)
try:
queryset = paginator.page(page)
except PageNotAnInteger:
queryset = paginator.page(1)
except EmptyPage:
queryset = paginator.page(paginator.num_pages)
hey = paginator.num_pages
context = {
"queryset": queryset,
"title": "posts",
"page_request_var": page_request_var,
"today": today,
"paginator": paginator,
"hey": hey
}
return render(request, "posts/post_list.html", context)
这是帖子的细节
def post_detail(request, slug=None):
instance = get_object_or_404(Post, slug=slug)
queryset_list = Post.objects.active()
if request.user.is_staff or request.user.is_superuser:
queryset_list = Post.objects.all()
query = request.GET.get("q")
if query:
queryset_list = queryset_list.filter(
Q(title__icontains=query) |
Q(content__icontains=query) |
Q(user__first_name__icontains=query) |
Q(user__last_name__icontains=query)
).distinct()
if instance.publish > timezone.now().date() or instance.draft:
if not request.user.is_staff or not request.user.is_superuser:
raise Http404
share_string = quote_plus(instance.content)
context = {
"title": "detail ",
"instance": instance,
"share_string": share_string,
"query": query
}
return render(request, "posts/post_detail.html", context)
我不太确定如何在post_细节中安排语法,因为它没有使用分页器。我也打破了Django的枯燥规则。我如何实施我的搜索并坚持干燥原则?任何帮助都会很好。您应该使用基于类的视图,CBV帮助您编写干净且可维护的代码 在您的情况下,请从以下位置使用ListView和DetailView:
from django.views.generic import ListView , DetailView
from .models import Foo
class FooListView(ListView):
model = Foo
class FooDetailview(DetailView):
model = Foo