#python #django #get
Вопрос:
Я нашел аналогичный вопрос, но он был для Django 1.5, и я не думаю, что он сработал для меня.
class SearchedPostListView(ListView):
model = Post
template_name = 'blog/search.html' # <app>/<model>_<viewtype>.html
paginate_by = 2
context_object_name = 'posts'
def get_context_data(self, *args, **kwargs):
context = super(SearchedPostListView, self).get_context_data(*args, **kwargs)
query = self.kwargs.get('q')
context['posts'] = Post.objects.filter(Q(title__icontains=query) | Q(author__username__icontains=query) | Q(content__icontains=query))
context['categories'] = Categories.objects.all
return context
Это мой код. Я пытаюсь просмотреть все сообщения на своем веб-сайте, и я показываю все сообщения, в названии которых есть запрос.
Итак, если я введу URL localhost:8000/search?q=foo
-адрес , он должен показать мне сообщения, содержащие это слово foo
в названии.
Но я не могу получить доступ к параметрам GET. Как получить доступ к параметрам GET в Django 3.2?
Комментарии:
1. То же, что и представление на основе функций,
self.request.GET.get("q")
Ответ №1:
Используйте query = self.request.GET.get('q')
вместо query = self.kwargs.get('q')
этого .
class SearchedPostListView(ListView):
model = Post
template_name = 'blog/search.html' # /_.html
paginate_by = 2
context_object_name = 'posts'
def get_context_data(self, *args, **kwargs):
context = super(SearchedPostListView, self).get_context_data(*args, **kwargs)
query = self.request.GET.get('q')
context['posts'] = Post.objects.filter(Q(title__icontains=query) | Q(author__username__icontains=query) | Q(content__icontains=query))
context['categories'] = Categories.objects.all
return context