【问题标题】:Json data not saving in django database AdminJson 数据未保存在 django 数据库管理员中
【发布时间】:2021-10-12 19:50:06
【问题描述】:

我正在构建一个 BlogApp,我正在尝试通过 geoplugin 访问用户位置,但它是通过 json 发送的,所以我希望将 json 数据发送到数据库但 json 数据未保存在 @987654324 @(管理员)。

当我点击链接时,它会显示:-

'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!")

我看过很多答案,但没有找到任何解决方案。而且它仍然没有保存在数据库中。

任何帮助将不胜感激。

【问题讨论】:

  • 在您看来,您到底想做什么?我不认为它做你想做的事。
  • 我正在尝试保存 url 的输出。 @dustin-我们。请帮忙
  • 您要向 geoplugin.net 网址发出 POST 请求吗?
  • 是的,先生。我想保存 url 的输出。

标签: python json django django-views geolocation


【解决方案1】:

根据你帖子上的cmets,这应该是错误:

您正在尝试向您提供给我们的 URL 发出 POST-Request,执行以下操作:

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

这不起作用,request,是一个描述用户加载您的网页的 INCOMING 请求的对象。这有一个 POST 属性,您可以从中获取,例如表单数据。

要发出 POST 请求并保存数据,您需要一个 Python 包,我一直使用Requests,我认为它也是最流行的。

然后你会按照以下方式做一些事情:

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

data = r.json()

# Continue your script

所以,基本上,你的尝试是好的,我认为你只是混淆了 requestrequests

【讨论】:

  • 预期值:第 1 行第 1 列(字符 0)
猜你喜欢
  • 2013-10-16
  • 2021-06-02
  • 2021-08-25
  • 2020-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-07
  • 1970-01-01
相关资源
最近更新 更多