Django не может найти данные, которые, как я уверен, существуют в базе данных
В основном мое приложение получает серийный номер через AJAX POST запрос с фронт-энда, и оно должно найти продукт, серийный номер которого совпадает с заданным серийным номером, и вернуть его данные.
вот мой взгляд, я подтвердил, что данные получены правильно и что продукт с точным серийным номером существует в базе данных, но я все еще получаю ответ 404 not found.
Я использую Mariadb в качестве базы данных моего приложения. вот мой код: ``
```
from django.http import HttpResponse
from django.shortcuts import render
from django.views.decorators.csrf import csrf_exempt
from products.models import Products
from django.shortcuts import get_object_or_404
``
# Create your views here.
@csrf_exempt
def products(request):
if request.method == 'POST':
query = request.body.decode('utf-8')
products = Products.objects.all()
for i in products:
print(f"item{i} : {i.serial_number}")
print(f"request : {query}")
context = {
'products' : products,
}
get_object_or_404(products,serial_number = query)
return render(request,"products/products.html",context)
else:
return render(request,"products/products.html")
```
here is the terminal output:
`
`[31/Oct/2022 10:29:48] "GET / HTTP/1.1" 200 2459
itemProducts object (1) : https://blog.minhazav.dev/research/html5-qrcode.html
itemProducts object (3) : 123
itemProducts object (4) :
itemProducts object (5) : http://shooka.com
request : "http://shooka.com"
Not Found: /`
``
и вот код моей модели:
`from django.db import models
# Create your models here.
class Products(models.Model):
pub_date = models.DateTimeField('date published',null=False)
prod_name = models.CharField(max_length=255 , null=False)
serial_number = models.CharField(max_length=255 , null
=False,unique=True)
comments = models.TextField()`
Как вы можете видеть, serial_number является строкой, и мой запрос также является строкой, поэтому не должно быть никаких проблем при сравнении этих двух
я попробовал привести запрос к str, прежде чем искать его в базе данных, я также проверил charset моей базы данных, uts utf8mb4
Я бы попробовал сначала отфильтровать его вручную следующим образом:
query = request.body.decode('utf-8')
obj = Products.objects.all()
first_obj = obj.filter(serial_number=query)
print(first_obj)
Убедитесь, что вы действительно получаете query
от Ajax, я бы получил его следующим образом:
query = request.POST.get('serial_numeber')
Итак, если вы прочитаете комментарий Абдула Азиза Барката, проблема была в том, что запрос был отправлен неправильно с фронт-энда, проблема была в том, что я использовал метод stringify для данных, которые ВСЕГДА были строкой, поэтому я искал "data" вместо data, поэтому я получал ошибку 404 от сервера