首页 > 解决方案 > 收到我的 dict 对象在 Django 应用程序中没有属性 META 的错误

问题描述

我正在尝试提取 json 数据并将其显示在使用 Django 的页面上。我收到以下错误:

'dict' 对象没有属性 'META'

在我的 views.py 文件的第 36 行,内容如下:

返回渲染(请求,'base_generic.html',上下文=上下文)

是在搜索中出现的,但我有适合我的上下文的正确括号,我也找到了这个,但老实说,这让我更加困惑。

您对为什么会发生这种情况或我做错了什么有任何建议吗?非常感谢你,如果我能提供任何其他东西来让我的问题更清楚,我会这样做。谢谢大家的时间。

视图.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>

索引.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']

追溯:

内部 34 中的文件“/home/doug/.virtualenvs/django/lib/python3.6/site-packages/django/core/handlers/exception.py”。response = get_response(request)

_get_response 115 中的文件“/home/doug/.virtualenvs/django/lib/python3.6/site-packages/django/core/handlers/base.py”。response = self.process_exception_by_middleware(e, request)

_get_response 113 中的文件“/home/doug/.virtualenvs/django/lib/python3.6/site-packages/django/core/handlers/base.py”。 response = Wrapped_callback(request, *callback_args, **callback_kwargs)

索引 36 中的文件“/home/doug/Documents/opengarden/wx/views.py”。return render(request, 'base_generic.html', context=context)

渲染 36 中的文件“/home/doug/.virtualenvs/django/lib/python3.6/site-packages/django/shortcuts.py”。 content = loader.render_to_string(template_name, context, request, using=using)

render_to_string 62 中的文件“/home/doug/.virtualenvs/django/lib/python3.6/site-packages/django/template/loader.py”。return template.render(context, request)

渲染 61 中的文件“/home/doug/.virtualenvs/django/lib/python3.6/site-packages/django/template/backends/django.py”。返回 self.template.render(context)

渲染 169 中的文件“/home/doug/.virtualenvs/django/lib/python3.6/site-packages/django/template/base.py”,带有 context.bind_template(self):

文件“/usr/lib/python3.6/contextlib.py”进入 81.return next(self.gen)

bind_template 246.updates.update(processor(self.request)) 中的文件“/home/doug/.virtualenvs/django/lib/python3.6/site-packages/django/template/context.py”

调试 40 中的文件“/home/doug/.virtualenvs/django/lib/python3.6/site-packages/django/template/context_processors.py”。如果 settings.DEBUG 和 request.META.get('REMOTE_ADDR') 在settings.INTERNAL_IPS:

异常类型:/wx/ 处的 AttributeError 异常值:“dict”对象没有属性“META”

标签: pythondjango

解决方案


我的问题是我使用的变量名“request”与函数参数冲突。我一改变它就起作用了。

感谢 Selcuk 和 GavinH 的帮助。


推荐阅读