Строка поиска Django и заглавные буквы
Здравствуйте, я делаю приложение на Django и у меня есть вопрос. Я сделал строку поиска. Все бы работало правильно, как я хочу, но проблема в том, что когда элемент имеет заглавную букву или наоборот, поиск не работает так, как я хотел бы. Я хотел сделать так, чтобы при написании 'tea' или 'TEA' или 'TeA' поиск осуществлялся по артикулу. Надеюсь, вы меня поняли :)
Код:
views.py
def searchView(request):
if request.method == "GET":
context = request.GET.get('search')
items = Item.objects.all().filter(title__contains=context)
urls.py:
urlpatterns = [
path('', ShopListView.as_view(), name='home-page'),
path('signup', views.signup, name='signup-page'),
path('login', views.loginView, name='login-page'),
path('logout', views.logoutView, name='logout-page'),
path('detail/<int:pk>/', ShopDetailView.as_view(), name='detail-page'),
path('search/', views.searchView, name='search-page')
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Я думаю, что здесь проблема в запросе 'items'. Если вы хотите, чтобы я вставил больше кода, просто напишите его.
Вы можете фильтровать с помощью __icontains
[Django-doc], чтобы сделать регистро-вчувствительное соответствие:
from django.views.decorators.http import require_GET
@require_GET
def searchView(request):
if 'search' in request.GET:
context = request.GET['search']
items = Item.objects.filter(title__icontains=context)
else:
items = Item.objects.none()
return render(request, 'shop/search.html', {'items': items})
Вы, вероятно, должны возвращать что-то в случае, если параметр search
не передан. Например, пустую страницу.
Примечание: Вы можете ограничить представления только GET-запросами с помощью декоратора
@require_GET
декоратора [Django-doc].