【发布时间】:2019-12-04 09:32:53
【问题描述】:
我正在尝试使用 Django 提取 json 数据并将其显示在页面上。我收到以下错误:
'dict' 对象没有属性'META'
在我的 views.py 文件的第 36 行,如下:
return render(request, 'base_generic.html', context=context)
This 出现在搜索中,但我有适合我上下文的正确括号,我还找到了 this,但老实说,这让我更加困惑。
对于为什么会发生这种情况或我做错了什么,您有什么建议吗?非常感谢你,如果我能提供任何其他东西来让我的问题更清楚,我会这样做。谢谢大家的时间。
views.py
from django.shortcuts import render
from datetime import datetime
import requests
def index(request):
request = requests.get(MY_URL_IS_HERE).json()
current_temperature = request['currently']['temperature']
current_cloud_cover = request['currently']['cloudCover']
current_humidity = request['currently']['humidity']
current_near_storm_distance = request['currently']['nearestStormDistance']
current_near_storm_bearing = request['currently']['nearestStormBearing']
current_precip_intensity = request['currently']['precipIntensity']
current_uv_index = request['currently']['uvIndex']
current_sunrise = datetime.fromtimestamp(request['daily']['data'][0]['sunriseTime'])
current_sunset = datetime.fromtimestamp(request['daily']['data'][0]['sunsetTime'])
test = 'test'
context = {
'current_temperature':current_temperature,
'current_cloud_cover':current_cloud_cover,
'current_humidity':current_humidity,
'current_near_storm_distance':current_near_storm_distance,
'current_near_storm_bearing':current_near_storm_bearing,
'current_precip_intensity':current_precip_intensity,
'current_uv_index':current_uv_index,
'current_sunrise':current_sunrise,
'current_sunset':current_sunset,
}
return render(request, 'base_generic.html', context=context)
generic_base.html
<!DOCTYPE html>
<html lang="en">
<head>
{% block title %}<title>weather</title>{% endblock %}
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
<!-- Add additional CSS in static file -->
{% load static %}
<link rel="stylesheet" href="{% static 'css/styles.css' %}">
</head>
<body>
<div class="container-fluid">
<div class="row">
<div class="col-sm-2">
{% block sidebar %}
{% endblock %}
</div>
<div class="col-sm-10 ">{% block content %}{% endblock %}</div>
</div>
</div>
</body>
</html>
index.html
{% extends "base_generic.html" %}
{% block content %}
<ul>
<li><strong>current_cloud_cover:</strong> {{ current_cloud_cove }}</li>
<li><strong>current_temperature:</strong> {{ current_temperature }}</li>
<li><strong>current_humidity:</strong> {{ current_humidity }}</li>
<li><strong>current_near_storm_distance:</strong> {{ current_near_storm_distance }}</li>
<li><strong>current_near_storm_distance:</strong> {{ current_near_storm_distance }}</li>
<li><strong>current_near_storm_bearing:</strong> {{ current_near_storm_bearing }}</li>
<li><strong>current_precip_intensity:</strong> {{ current_precip_intensity }}</li>
<li><strong>current_uv_index:</strong> {{ current_uv_index }}</li>
<li><strong>current_sunrise:</strong> {{ current_sunrise }}</li>
<li><strong>current_sunset:</strong> {{ current_sunset }}</li>
</ul>
{% endblock %}
完整的追溯
环境:
请求方法:GET 请求地址:http://127.0.0.1:8000/wx/
Django 版本:2.2.3 Python 版本:3.6.8 已安装的应用程序: ['django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles'] 已安装 中间件:['django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware']
追溯:
文件 “/home/doug/.virtualenvs/django/lib/python3.6/site-packages/django/core/handlers/exception.py” 在内部 34. response = get_response(request)
文件 “/home/doug/.virtualenvs/django/lib/python3.6/site-packages/django/core/handlers/base.py” 在 _get_response 115. response = self.process_exception_by_middleware(e, request)
文件 “/home/doug/.virtualenvs/django/lib/python3.6/site-packages/django/core/handlers/base.py” 在 _get_response 113. response = Wrapped_callback(request, *callback_args, **callback_kwargs)
索引中的文件“/home/doug/Documents/opengarden/wx/views.py” 36. 返回渲染(request, 'base_generic.html', context=context)
文件 “/home/doug/.virtualenvs/django/lib/python3.6/site-packages/django/shortcuts.py” 在渲染中 36. content = loader.render_to_string(template_name, context, request, using=using)
文件 “/home/doug/.virtualenvs/django/lib/python3.6/site-packages/django/template/loader.py” 在 render_to_string 62. return template.render(context, request)
文件 “/home/doug/.virtualenvs/django/lib/python3.6/site-packages/django/template/backends/django.py” 在渲染中 61. return self.template.render(context)
文件 “/home/doug/.virtualenvs/django/lib/python3.6/site-packages/django/template/base.py” 在渲染中 169. 使用 context.bind_template(self):
进入中的文件“/usr/lib/python3.6/contextlib.py” 81. 返回下一个(self.gen)
文件 “/home/doug/.virtualenvs/django/lib/python3.6/site-packages/django/template/context.py” 在 bind_template 246.updates.update(处理器(self.request))
文件 “/home/doug/.virtualenvs/django/lib/python3.6/site-packages/django/template/context_processors.py” 在调试中 40. 如果settings.INTERNAL_IPS中有settings.DEBUG和request.META.get('REMOTE_ADDR'):
异常类型:/wx/ 处的 AttributeError 异常值:“dict”对象 没有属性“META”
【问题讨论】:
-
在此处使用不同的变量名,因为它与函数参数冲突:
request = requests.get(MY_URL_IS_HERE).json() -
@Selcuk 哇。我一直在寻找大约两个小时的答案,这解决了我的问题。现在由于某种原因它只是显示一个空白页而不是我的数据,但这是一个新问题。非常感谢您的宝贵时间!
-
你可能想渲染
"index.html"而不是"base_generic.html" -
@GavinH 你们都很棒。太疯狂了,我怎么会如此关注并忽略这些小事。非常感谢您的宝贵时间。