Данные 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