Данные Json не сохраняются в базе данных django Admin

Я создаю BlogApp и пытаюсь получить доступ к местоположению пользователя через geoplugin НО он отправляется через json поэтому я сделал представление для отправки json данных в базу данных НО json данные не сохраняются в Database (Admin).

Когда я нажимаю на ссылку, она отображается :-

У объекта 'NoneType' нет атрибута 'json'

НО потом я использую json.loads тогда он показывает :-

объект JSON должен быть str, bytes или bytearray, а не NoneType

.

models.py

class Location(models.Model):
    user = models.ForeignKey(User,on_delete=models.CASCADE)
    city = models.JSONField()

views.py

def jsonLocation(request):
    r = request.POST.get('http://www.geoplugin.net/javascript.gp')

    # data = json.loads(r)

    data = r.json()

    for x in data:

        title = x["geoplugin_city"]
        user = request.user

        addin = Location.objects.create(city=title,user=request.user)

        addin.save()

    return HttpResponse("Successfully submitted!")

Я видел много ответов, но не нашел никакого решения. И это все еще не сохраняется в базе данных.

Любая помощь будет оценена по достоинству.

Согласно вашим комментариям к посту, ошибка должна быть такой:

Вы пытаетесь выполнить POST-запрос к URL-адресу, который вы нам предоставили, делая следующее:

def jsonLocation(request):
    r = request.POST.get('http://www.geoplugin.net/javascript.gp')

This will not work, request - это объект, описывающий ВХОДЯЩИЙ запрос пользователя, загружающего ВАШУ веб-страницу. У него есть свойство POST, откуда вы можете получить, например, данные формы.

Чтобы сделать POST-запрос и сохранить данные, вам понадобится пакет Python для этого, я всегда использую Requests, думаю, он также наиболее популярен.

Тогда вы сделаете что-то вроде этого:

import requests
r = requests.get('http://www.geoplugin.net/javascript.gp')

data = r.json()

# Continue your script

По сути, ваша попытка была хорошей, я думаю, вы просто перепутали request и requests

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