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 от сервера

Вернуться на верх