JSONDecodeError at / Expecting value: line 1 column 1 (char 0) when try to return response in django rest_framework
Я новичок в python rest_framework
. Я пытаюсь создать django
веб-сайт с двумя App
приложениями.
В первом приложении есть HTML форма , которая получает от пользователя название города, а затем посылает запрос к API во втором приложении , вызывает WeatherApp
. В WeatherApp
я читаю данные из базы данных и сериализую их, но при попытке return response
я получаю эту ошибку:
JSONDecodeError at /. Ожидаемое значение: строка 1 столбец 1 (char 0)
Это первое приложение views
:
def index(request):
context = {'form': form}
if request.method == 'POST':
form = CityForm(request.POST)
if form.is_valid():
name = form.cleaned_data['name']
url = "http://127.0.0.1:8000/city/{}"
city_weather = requests.get(url.format(name)).json()
Это WeatherApp
views
:
def myfunc(self, cityname):
query = City.objects.filter(name = cityname)[0]
serializer = CitySerializer(query)
return Response(serializer.data)
Это serializer
:
class CitySerializer(serializers.ModelSerializer):
class Meta:
model = City
fields = ("id", "name", "temperature")
А это мой model
:
class City(models.Model):
name = models.TextField(max_length=150)
temperature = models.IntegerField(max_length=200, default=40)
LastUpdate = models.DateTimeField(default= datetime.now)
def __str__(self) -> str:
return self.name
Когда я отлаживаю код, ошибка появляется в return self.name
в модели.
Любая помощь будет оценена по достоинству.
Я разобрался с этим и делюсь решением для всех, у кого есть подобная проблема:
Проблема была в return
в WeatherApp
views
.
Должно быть так:
return JsonResponse(serializer.data)
и JsonResponse
должны импортироваться следующим образом:
from django.http import JsonResponse