django - HttpRequest 对象没有属性“会话”

2024-01-22

我似乎无法让会话正常工作。 Django 抱怨 HttpRequest 对象没有名为“session”的属性。在文档中明确指出,如果您启用了中间件,并且在安装的应用程序中启用了 django.contrib.sessions,那么您就可以开始了。我使用单元测试时收到此错误。

在我的views.py中:

def home_page(request):
    response = render(request, 'home.html', {'message_text' : request.session.get('message_text', ''),
'ip_address'    :   request.session.get('ip_address', ''),
'port_number'   :   request.session.get('port_number', ''),
'command_text'  :   request.session.get('command_text', ''),})

    request.session['message_text'] = ''

    return response

我试图获取的会话值是我试图在views.py 中其他地方的表单post 方法中设置的值。

它还指出,这些功能在新项目中默认启用。因此,我创建了一个全新的 django 项目,并在控制台中检查了会话属性。这正是我所做的:

(django1.5)Python $ django-admin.py startproject testing
(django1.5)Python $ cd testing/
(django1.5)testing $ python manage.py shell
Python 2.7.3 (v2.7.3:70274d53c1dd, Apr  9 2012, 20:52:43) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from django.http import HttpRequest
>>> r = HttpRequest()
>>> r.session
Traceback (most recent call last):
  File "<console>", line 1, in <module>
AttributeError: 'HttpRequest' object has no attribute 'session'
>>>

我缺少什么?

更新:这只在使用单元测试进行测试时才会发生。这是导致异常的测试:

def test_home_page_returns_correct_html(self):
        request = HttpRequest()
        response = home_page(request)
        expected_html = render_to_string('home.html')
        self.assertEqual(response.content, expected_html)

将以下内容添加到测试文件的顶部:

from django.conf import settings
from django.utils.importlib import import_module

那么这应该有效:

def test_home_page_returns_correct_html(self):
    request = HttpRequest()
    engine = import_module(settings.SESSION_ENGINE)
    session_key = None
    request.session = engine.SessionStore(session_key)
    response = home_page(request)
    expected_html = render_to_string('home.html')
    self.assertEqual(response.content, expected_html)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

django - HttpRequest 对象没有属性“会话” 的相关文章

  • django:如何在模板html页面内进行计算?

    您好 我正在使用缩略图插件来获取图像的宽度和高度 现在我想使用从缩略图插件获取的高度来定义 img 标签的填充 例如 img style padding top img height 2 src 但是我在这里遇到错误 django不允许这样
  • 如何删除django中级联的一对一相关模型?

    背景 我在 Django 1 8 5 中定义了以下模型 class PublishInfo models Model pass class Book models Model info models OneToOneField Publis
  • Django:模拟模型上的字段

    如何将模拟对象分配给该模型上的用户字段 无论如何都要绕过 SomeModel user 必须是 User 实例 检查吗 class SomeModel models Model user models ForeignKey User 我不会
  • Django Ajax ModelForm 向 request.POST 提交一个空表单

    对于 django ajax 和 jquery 我是个新手 所以如果我的问题显得微不足道 我提前道歉 我已经在这个问题上摸不着头脑有一段时间了 但我正在尝试使用 ajax 和 jquery 通过 jQuery UI 提供的模式对话框窗口提交
  • 预取相关之后选择相关

    我的模型看起来像 class Book models Model publisher models ForeignKey Publisher This is not important class Baz models Model a mo
  • 可以用 Django 制作移动应用程序吗?

    我想知道我是否可以在我的网站上使用 Django 代码 并以某种方式在移动应用程序 Flutter 等框架中使用它 那么是否可以使用我现在拥有的 Django 后端并在移动应用程序中使用它 所以就像models views etc 是的 有
  • Django 模型:如何使用 mixin 类来覆盖 django 模型以实现 save 等功能

    我想在每次保存模型之前验证值 所以 我必须重写保存函数 代码几乎是一样的 我想把它写在 mixin 类中 但失败了 我不知道如何写 super func 我英语不好 抱歉 class SyncableMixin object def sav
  • 本地主机和 request.Url.Authority

    我的应用程序通过 URL 中的公司标识符分隔用户 company1 app com company2 app com 我正在本地 PC 上进行测试 请求如下 company1 localhost com 但是 我的 request Url
  • Jquery Ajax 调用返回 403 状态

    我有一个 jquery Ajax 调用来实现会话的 keepalive 这个 keepAlive 方法将每 20 分钟调用一次 function keepAlive ajax type POST url KeepAliveDummy asp
  • 在一个视图中使用两个模板

    我尝试以两种方式呈现视图中的内容 html 和 csv 下载 我能够做到这一点的唯一方法是使用两种不同的视图 一种用于 html 演示 一种用于 csv 这重复了我的代码 我正在寻找更优雅的解决方案 有什么建议么 这是示例代码 views
  • 如何在 Django 模板中显示站点的用户友好名称?

    我正在寻找一种在模板中显示我的 Django CMS 站点名称的方法 我创建了一个基本的 Django CMS 网站如下本指南 http docs django cms org en release 3 4 x introduction i
  • django 中计数器的原子增量

    我正在尝试自动增加 Django 中的一个简单计数器 我的代码如下所示 from models import Counter from django db import transaction transaction commit on s
  • 如何使用python登录页面,该页面需要服务器在第一次请求时响应会话ID?

    我正在编写一个脚本来登录某个网页 我使用 request 和 request session 模块来实现此目的 在使用登录参数的第一个请求时 服务器响应一个会话 ID 如何设置该会话 ID 以进一步登录到同一页面 url some url
  • Django 不显示更新的 css 文件

    因此 我使用 sass 来更新我的 Django 站点 并使用 git 来对整个内容进行版本控制 我最近对 CSS 文件进行了更新 其中存在一些严重错误 Sass 编译了更改 然后我将新版本推送到服务器 我查看了服务器 新的 css 文件实
  • Django - 简单的搜索表单

    使用 Django 1 9 和 Python 3 5 我想制作一个简单的搜索表单 views py from django views import generic from django shortcuts import render f
  • Django:如何测试“HttpResponsePermanentRedirect”

    我正在为我的 django 应用程序编写一些测试 在我看来 它使用 HttpResponseRedirect 重定向到其他一些网址 那么我该如何测试呢 姜戈TestCase类有一个方法assertRedirects https docs d
  • 如何在没有 openshift 的情况下托管 Django localhost 应用程序?

    我已经在本地主机中创建了一个 Django 应用程序 现在我需要在互联网上托管 我已经尝试过开档 https www openshift com and 任何地方的Python https www pythonanywhere com也 但
  • 如果字段值在外部列表中,Django 会注释布尔值

    想象一下我有这个 Django 模型 class Letter models Model name models CharField max length 1 unique True 还有这个列表 vowels a e i o u 我想查询
  • asp.net cookie、身份验证和会话超时

    我有一个使用表单身份验证的 asp net 网站 我在会话中保留一些信息 例如用户名 用户 ID 电子邮件等 我通过在身份验证 cookie 上设置较长的到期日期来允许用户保持登录网站的状态 因此 当用户仍处于身份验证状态时 会话过期的情况
  • Django South - 将 null=True 字段转换为 null=False 字段

    我的问题是 转变的最佳做法是什么null True场变成null False使用 Django South 的字段 具体来说 我正在与ForeignKey 你应该先写一个数据迁移 http south aeracode org docs t

随机推荐

  • SSIS Oracle 提供商 OLEDB 连接器中的 Oracle Wallet 集成

    我已经在 Windows 7 的机器中成功配置了 Oracle 钱包 我还通过执行以下命令进行了检查 sqlplus myoracleDB 并成功连接到数据库 我正在尝试在我的计算机中执行 SSIS 包 DTSX 版本 2012 在数据流任
  • 如何将 event.preventDefault 与 KnockoutJs 单击事件处理程序一起使用?

    我将下表行作为 KnockoutJs 中的脚本模板
  • jquery 验证:如果提交按钮失去焦点,如何防止模糊(焦点消失)验证

    我有一个文本框 如果在文本框中输入无效值后单击提交按钮 我不希望对模糊进行验证 如果我模糊到任何其他控件 那么我do希望进行验证 Windows 桌面 窗体允许将控件指定为 no causing validation 对于这种具体情况 是否
  • Winston:尝试在没有传输的情况下写入日志

    我正在尝试使用 Winston 为我的 Express 服务器设置访问日志和错误日志 但我似乎做错了什么 这是我对配置文件的尝试 const winston require winston fs require fs const tsFor
  • apt-get 在公司代理后面的 docker 中

    我正在尝试使用 Docker 在企业代理服务器后面设置一个开发环境 尽我所能 我无法让 docker 容器与代理服务器通信 代理服务器和 apt get 在主机 Ubuntu 12 04 上工作正常 Dockerfile 中完成的第一件事是
  • “分组依据”代理模型

    我有理论上无限深度的树模型和一些属性 组 除了标准视图之外 我还需要以这样的方式显示此模型 并保持同步 即每个组都成为具有相同属性值的所有项目的虚拟父级 使用 Qt 的模型 视图架构实现此目的的最佳方法是什么 不久前 我通过在模型中添加 删
  • PHP邮件功能不以html格式发送

    在 PHP 中 我尝试以 HTML 格式发送电子邮件 到目前为止我有这个 subject Password Reminder message Your password is b password b br br br br me mess
  • 单击 ng-grid/ui-grid celltemplate 会导致选择行。

    当我将 celltemplate 用于 ahref 链接时 一旦单击链接 行就会突出显示 因为我启用了 RowSelection 但我不希望在单击链接时突出 显示该行 仅当在除链接之外的任何位置单击该行时 另外 在下面的示例图片中 如何删除
  • windows 8 xaml 内联超链接

    如何在 XAML 中的 Windows 应用商店应用中创建格式正确的超链接 我尝试创建一个内联超链接 并希望使用静态资源对其进行样式设置
  • Checkstyle:尾随空格正则表达式问题

    我正在将 Checkstyle 添加到我的项目中 但检测空格的规则不够好 RegexpSingleline lt S s 它检测尾随空格并仅忽略带有空格的行 它应该允许缩进的空白行 它在大多数情况下工作正常 但它抱怨使用空行的 javado
  • 适用于多种设备的演示技术

    我们的应用程序应该为多种设备提供服务 从简单的智能手机 iPhone 触摸屏到普通浏览器 应用程序是分层的 因此我们可以重用业务层和持久层 然而 我们也想对单个表示层进行编程 例如 我知道 ASP NET 根据浏览器类型生成不同的 html
  • 在 Mac (OS High Sierra) 上安装 Flask-mysqldb (python 3) 时出错

    在按照在线教程创建 Flask Web 应用程序时 我尝试使用以下命令安装 Flask mysqldbsudo pip3 install flask mysqldb 这会导致安装错误 该错误似乎源于依赖性问题 错误信息如下Command u
  • 如何在Python中根据椭圆的一般方程绘制椭圆

    我知道matplotlib可以根据椭圆的中心 半长轴长度 半短轴长度以及x轴和长轴之间的角度来绘制椭圆 但是有没有简单的方法可以像Matlab一样根据椭圆的一般方程绘制椭圆 ezplot 3 x 2 2 x y 4 y 2 5 我找到了一种
  • 如何测试文件列表是否存在?

    我有一个列出文件名的文件 每个文件名都在自己的行上 我想测试每个文件名是否存在于特定目录中 例如 文件的一些示例行可能是 mshta dll foobar dll somethingelse dll 我感兴趣的目录是X Windows Sy
  • 在 Azure 角色中使用 SmtpClient 时出现“不支持请求的功能”异常

    在 Azure Web 或辅助角色中使用 SmtpClient 时出现异常 我创建了一个控制台应用程序 通过 RDP 在角色虚拟机上手动运行以进行重现 using System using System Net using System N
  • 使用节点和角度应用程序刷新页面时获取 404 页面

    我是新来的Angular 我尝试使用创建 CRUD 操作Nodejs and Angular 我在用Nodejs and Express对于支持和Angular对于前端 当我使用 routerLink 在页面上导航时 它工作正常 但是当我在
  • 具有递归可变参数函数的字符串流?

    我希望能够使用 ostringstream 将多个不同的参数组合成一个字符串 这样我就可以记录生成的单个字符串 而不会出现任何随机问题 我到目前为止 template
  • OAuth 2.0 - 客户端秘密是否必须是“秘密”?

    我只是好奇 我需要保留客户端秘密来自 Google FaceBook 其他 OAuth 2 0 提供商的 秘密 地方 据我所知 一旦我指定了非常严格的回调网址 就可以使用客户端秘密参数完成很少的事情 例如 将 秘密 密钥提交到 github
  • 从 jck 密钥存储导出密钥

    我们有一个包含秘密密钥的 jck 密钥库 jceks 格式 它是使用 keytool 命令生成的 keytool genseckey alias mykey keyalg AES keysize 256 storetype jceks ke
  • django - HttpRequest 对象没有属性“会话”

    我似乎无法让会话正常工作 Django 抱怨 HttpRequest 对象没有名为 session 的属性 在文档中明确指出 如果您启用了中间件 并且在安装的应用程序中启用了 django contrib sessions 那么您就可以开始