首页 > 解决方案 > 是否可以将一个视图中定义的类的实例传递给Django中的另一个视图

问题描述

是否可以将一个视图中定义的类的实例传递给 Django 中的另一个视图?

我尝试使用会话并且能够传递属性但无法传递方法。理想情况下,我想直接将类实例传递给会话,但我收到一条错误消息,提示“对象不是 JSON 可序列化”

更多上下文,我有2个观点。为每个用户呈现一个页面。它还使用 get_response() 方法声明了一个类 (MyClass),该方法根据输入文本返回响应。

def display_user(request, pk, slug):

    obj = MyClass(...)

    ...

    request.session['obj_name'] = obj.name

    request.session['obj_method'] = obj.method(input_text)  # <-- how to pass method to session

    return render(request, 'page.html', context = {...})

我认为我可以进行 api 调用以从上面定义的类的方法中获取响应。

def obj_api(request, pk, slug):

    obj_name =  request.session['obj_name'] # this works
    
    if request.method == 'POST':
        input_data = json.loads(request.body.decode('utf-8'))
        
        response = obj.get_response(input_data) # <-- how to get method from session

        ## response = request.session['obj_method'](input_data)
    ... 
    return JsonResponse(response_data, status=200)

任何帮助,将不胜感激。

标签: djangodjango-rest-frameworkdjango-viewsdjango-sessionsdjango-request

解决方案


推荐阅读