【问题标题】:TypeError django context using custom class使用自定义类的 TypeError django 上下文
【发布时间】:2014-02-10 16:32:56
【问题描述】:

我是 python 和 django 的新手,我正在尝试在模板中将一个类传递给我的 RequestContext。所以我有这个代码:

context = RequestContext(request, {
    'test' : myClass,
})

myClass 就是这样的一个实例:

class ajax_user_session():
    user_model = None
    user_settings = None
    time_login = datetime.datetime.now()

user_modeluser_settings 都是派生自 django 的 models.Model 的类(在创建和使用上下文类之前分配)。我收到以下错误:

TypeError at /settings
<playground.ajax_processing.ajax_user_session instance at 0x263fab8> is not JSON serializable

请问有人知道怎么解决吗?我可以分配“普通”变量,如字符串、整数,但我不想在字典中添加一些东西,我只想使用一个大类。

谢谢。

【问题讨论】:

  • 你真的想传递一个类,还是一个类的实例?
  • @PlatinumAzure 实例。
  • 你在哪里序列化到 json?
  • @DanielRoseman 不知道,正如我所说,我对 python 很陌生..
  • 什么?你已经编写了这段代码,没有其他人。该错误表示它发生在 JSON 序列化过程中。所以,请显示该代码。无论如何,您应该显示完整的回溯和所有相关代码。

标签: python django


【解决方案1】:

试试这个:

from django.forms.models import model_to_dict
context = RequestContext(request, {
    'test' : model_to_dict(myClass),
})

有时model_to_dictdatetime 存在问题,因此您可能需要使用model_to_dict(myClass, exclude=time_login) 排除该字段,然后手动设置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-09
    • 2015-08-20
    • 2019-09-15
    • 2018-06-09
    • 2016-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多