“NoneType”对象在 Django 项目中不可迭代

2024-05-25

当我尝试使用“ python manage.py runserver ip:port”运行我的 django 应用程序时,出现“'NoneType'对象不可迭代”错误,而如果我使用“ python manage.py runserver 0.0.0.0”,则不会发生相同的错误。 0.0:8000”。我确实需要使用我的 IP 地址来完成这项工作。错误页面1的链接 https://i.stack.imgur.com/LIIRH.png and 错误页面2的链接 https://i.stack.imgur.com/hPZHI.png

我究竟做错了什么?

这是我的 settings.py 的样子:

"""
Django settings for SimStudent project.

Generated by 'django-admin startproject' using Django 2.2.

For more information on this file, see
https://docs.djangoproject.com/en/2.2/topics/settings/

For the full list of settings and their values, see
https://docs.djangoproject.com/en/2.2/ref/settings/
"""

import os

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))


# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/2.2/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = ''

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

#ALLOWED_HOSTS = ['0.0.0.0', '10.153.1.51', '127.0.0.1']
ALLOWED_HOSTS = ['*']



# Application definition

INSTALLED_APPS = [
    'channels',
    'chat',
    'django_tables2',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.sites',
    'SimStudent'

]

MIDDLEWARE = [
    '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',
]

ROOT_URLCONF = 'SimStudent.urls'

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')]
        ,
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'SimStudent.context_processor.tutor_tutee_session_info',
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

WSGI_APPLICATION = 'SimStudent.wsgi.application'

ASGI_APPLICATION = 'SimStudent.routing.application'

CHANNEL_LAYERS = {
    'default': {
        'BACKEND': 'channels_redis.core.RedisChannelLayer',
        'CONFIG': {
            "hosts": [('127.0.0.1', 6379)],
        },
    },
}


# Database
# https://docs.djangoproject.com/en/2.2/ref/settings/#databases

DATABASES = {
    #'default': {
    #    'ENGINE': 'django.db.backends.sqlite3',
    #    'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    #}

    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'simstudent_oz',
        'USER': 'sim_tasmia',
        'PASSWORD': '123456',
        'HOST': 'localhost',
        'PORT': '5433',
    }
}


# Password validation
# https://docs.djangoproject.com/en/2.2/ref/settings/#auth-password-validators

AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]


# Internationalization
# https://docs.djangoproject.com/en/2.2/topics/i18n/

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True


# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/2.2/howto/static-files/

STATIC_URL = '/static/'
#STATIC_ROOT = os.path.join(BASE_DIR, "static/")
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]

我的 context_processor.py 看起来像:

from django.shortcuts import get_object_or_404
from django.utils.safestring import mark_safe
import json
from chat.models import Session, TutorTuteeConversation
from django.core import serializers

from chat.models import Session


def tutor_tutee_session_info(request):
    if 'session_id' in request.session:
        session_id = request.session['session_id']
        room_name = request.session['room_name']
        print("inside context", session_id)
        session = get_object_or_404(Session, pk=int(session_id))
        chat_history = TutorTuteeConversation.objects.filter(session_id=int(session_id)).order_by('comment_time')
        dict_chat_history = serializers.serialize("json", chat_history)
        print("dict chat history inside context", dict_chat_history)
        return {
            "session_info": session,
            "chat_history": mark_safe(json.dumps(dict_chat_history)),
            "room_name": room_name,
        }

项目目录结构在这里 https://i.stack.imgur.com/FZ4v5.png


这发生在我身上并通过让 else 返回一个空字典来解决,例如:

def test(request):
   if condition:
      return {"val":val}
   else:
      return {}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

“NoneType”对象在 Django 项目中不可迭代 的相关文章

随机推荐

  • 堆内存问题

    有一个 WCF 自托管服务必须在 99 的时间内正常工作 有时我们会遇到这样的记忆问题 但问题发生后 服务一切正常 我们该如何处理这个问题 任何关于提供能够在不同情况下生存的强大服务的提示和要点都非常受欢迎 我不太确定问题出在哪里 但内存泄
  • 如何在Ubuntu 22.04上安装python3.6

    我需要安装这个特定的python版本 以准备开发人员环境 因为我正在维护一个包含多个基于python 3 6 9的库的系统 我最近在笔记本电脑上安装了 Ubuntu 22 04 但尝试安装这个 python 版本没有成功 我尝试安装添加 d
  • 在 Ruby Net::HTTP.start 中为服务调用设置 read_timeout

    我想在我的 ruby 代码中覆盖服务调用的默认超时 我打开连接如下 res Net HTTP start task url host task url port do http http get tasks task id end 我尝试将
  • 使用 Opera 在 JavaScript 中更新图像源

    我定期使用 Image 对象加载远程图像 以便稍后在画布上绘制 Image 对象仅在 JS 中创建 它不存在于 DOM 中 该代码在 Chrome 和 Firefox 上运行良好 在 Opera 中 问题在于 每当修改图像源时 浏览器似乎总
  • 使用 Spring Security 进行会话管理:并发会话

    我使用 Spring Security 开发了一个 Web 应用程序 对于登录 它从 LDAP 获取访问权限 现在我想使用 spring security 本身来管理会话 我可以使用authentication getName 我正在得到u
  • F# 中的动态编程

    实现解决问题的动态规划算法的最优雅的方法是什么子问题重叠的问题 http en wikipedia org wiki Overlapping subproblem 在命令式编程中 人们通常会创建一个按问题大小索引的数组 至少在一维 然后算法
  • 在 macOS 中获取用户首选的温度设置

    我正在尝试读取温度单位 摄氏度 华氏度 的用户设置系统首选项 我试图使用 NSLocale 获取此数据 但我找不到任何温度设置的证据 甚至可以读取这些数据吗 Thanks 官方 API 记录在首选项 实用程序 https developer
  • 如何在 laravel eloquent 中保存布尔值

    我在 Laravel 中进行了以下迁移
  • 何时使用 if/endif 与 If{}?

    嗯 这个问题是不言自明的 在 PHP 中我什么时候使用if endif符号而不是标准if something 符号 Example A is equal to 5 Versus A is equal to 5 其他人给出了 用于模板 的答案
  • 在生产数据库上部署应用程序时无法加载文件或程序集“System.Data”错误

    问题 将我的应用程序部署到生产数据库时 出现以下错误 无法加载文件或程序集 System Data Version 2 0 0 0 Culture neutral PublicKeyToken b77a5c561934e089 或其依赖项之
  • 使用复选框来控制 Input.value (有一个令人讨厌的扭曲。)

    几天来我一直在研究使用复选框控制 UI 的方法 在 Stack 上一些成员的帮助下 我已经取得了很大的进展 但我的秃顶还没有完全停止 我一直在尝试通过在 UI 控制器旁边包含一个数值来进一步调整我的代码片段 该值稍后将在 web java
  • httplib.BadStatusLine: '' 在 Linux 上,但在 Mac 上则不然

    这个错误已经困扰我几个小时了 我决定编写一个单独的项目 只是为了看看我是否可以复制它 而且我可以 但只能在我的服务器上复制 这适用于我的 Mac Mac OSX El Capitan 10 11 6 服务器 CentOS 7 2 1511
  • Spring:在应用程序主方法中运行多个“SpringApplication.Run()”

    嘿 我是 spring 新手 我正在尝试在我的 Applications java 的 main 中运行多个运行方法 import org springframework boot autoconfigure EnableAutoConfi
  • JavaScriptSerializer 类是否已弃用?

    The MSDN 文档 https msdn microsoft com en us library system web script serialization javascriptserializer v vs 110 aspxJav
  • 使用角度测试 fakeAsync 和 jest it.each

    使用 Angular 8 angular builders jest 8 0 2 jest 24 8 并给出以下测试通过 import tick fakeAsync from angular core testing it test 100
  • 无法发送任何电子邮件

    我不断收到错误消息 warning mail a href function mail function mail a Failed to connect to mailserver at quot localhost quot port
  • docker-compose:容器之间的 Redis 连接被拒绝

    我正在尝试设置一个 docker compose 文件 该文件旨在替换运行多个进程 RQ 工作线程 RQ 仪表板和 Flask 应用程序 的单个 Docker 容器解决方案导师 http supervisord org 主机系统是 Debi
  • 我可以调试Exe吗

    我需要比较我的应用程序和工作应用程序之间的一些函数调用和签名 这里我并不是指任何逆向工程或访问其他应用程序的源代码的方法 而是真正需要知道工作应用程序使用的方法和接口是什么 我尝试将我的应用程序附加到 Visual Studio 然后 St
  • 仅在 1.8 或更高版本的源级别允许使用 Lambda

    我的 Eclipse 版本为 1 8 mars 2 版本 并且我将compliance java 级别设置为 1 8 如下所示 但我仍然收到错误 Lambda 仅允许在源级别 1 8 或更高版本 You also nend to set y
  • “NoneType”对象在 Django 项目中不可迭代

    当我尝试使用 python manage py runserver ip port 运行我的 django 应用程序时 出现 NoneType 对象不可迭代 错误 而如果我使用 python manage py runserver 0 0