Django.utils.datastructures.MultiValueDictKeyError: 'q'
Когда я пытаюсь фильтровать содержимое с помощью тегов, я получаю следующую ошибку
2022-10-21 16:05:47,853: Internal Server Error: /tag/tag1/
Traceback (most recent call last):
File "/home/app/.virtualenvs/venv/lib/python3.10/site-packages/django/utils/datastructures.py", line 84, in __getitem__
list_ = super().__getitem__(key)
KeyError: 'q'
**NO MATCH**
During handling of the above exception, another exception occurred:
**NO MATCH**
Traceback (most recent call last):
File "/home/app/.virtualenvs/venv/lib/python3.10/site-packages/django/core/handlers/exception.py", line 55, in inner
response = get_response(request)
File "/home/app/.virtualenvs/venv/lib/python3.10/site-packages/django/core/handlers/base.py", line 197, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/app/app/blog/views.py", line 28, in home
q= request.GET['q']
File "/home/app/.virtualenvs/venv/lib/python3.10/site-packages/django/utils/datastructures.py", line 86, in __getitem__
raise MultiValueDictKeyError(key)
django.utils.datastructures.MultiValueDictKeyError: 'q'
Мой views.py имеет вид
def home(request, tag_slug=None):
posts = Post.objects.all()
# tag post
tag = None
if tag_slug:
tag = get_object_or_404(Tag, slug=tag_slug)
posts = posts.filter(tags__in=[tag])
#search
q= request.GET['q']
if q is not None:
multiple_q=Q(Q(title__icontains=q) | Q(content__icontains=q))
posts=Post.objects.filter(multiple_q)
return render(request, 'blog/home.html', {'posts':posts})
в моем urls.py есть этот URLpatterns
...
path('tag/<slug:tag_slug>/',views.home, name='post_tag'),
Система поиска работает так, как я планирую, но по какой-то причине это влияет на мой фильтр тегов. Есть ли у вас идеи, как решить эту ошибку?