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

avatar
user16559633
9 августа 2021 в 03:46
131
1
0

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

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

Объект '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!")

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

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

Источник
dustin-we
9 августа 2021 в 09:18
0

Что вы пытаетесь сделать, на ваш взгляд, именно? Я не думаю, что он делает то, что вы хотите.

user16559633
9 августа 2021 в 09:59
0

Я пытаюсь сохранить вывод URL-адреса. @dustin-мы. Пожалуйста помоги

dustin-we
9 августа 2021 в 13:14
0

Вы хотите сделать POST-запрос к URL-адресу geoplugin.net?

user16559633
10 августа 2021 в 11:16
0

Да сэр. Я хочу сохранить вывод из URL-адреса.

Ответы (1)

avatar
dustin-we
11 августа 2021 в 09:13
0

Согласно вашим комментариям к сообщению, это должна быть ошибка:

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

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

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

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

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

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

data = r.json()

# Continue your script

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

user16559633
11 августа 2021 в 17:28
0

Ожидаемое значение: строка 1 столбец 1 (char 0)