Django View层公共类调用的问题?

发布于 2022-09-12 13:18:46 字数 1188 浏览 22 评论 0

目标:
我依据项目规范封装了一个HTTP返回类,在每个函数返回时,调用返回类response返回相应的内容。
问题:
Django每次请求并不会重新实例化我的返回类,这导致多次请求有时会返回相同的内容。然而我为类的一些属性设置了默认值,在不改变默认值的情况下,返回应当是默认值才对。

代码:
Response类(代码非真实代码,逻辑大体相同,请勿吐槽此类的作用)

from django.http import JsonResponse
class ApiResponse:
    def __init__(self):
        self.status_code = 200

    def set_status_code(self, status_code):
        self.status_code = status_code

    def get_status_code(self):
        return self.status_code

    def __error(message="Internal Error"):
        return JsonResponse({"status": "error", "message": message, "status_code":self.get_status_code()})

    def fail(self, message):
        self.set_status_code(400)
        return self.__error(message)

    def success(self, message):
        return JsonResponse({"status": "ok", "message": message})

View层:

from api_response.api_response import ApiResponse

response = ApiResponse()

def login(request):
    if request.method == "POST"
    #code....
        return response.success("登录成功")
    else:
        return response.fail("不支持的方法")

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

宣告ˉ结束 2022-09-19 13:18:46

全局变量对于单进程http服务器来说只实例化一次没毛病.你放到login里面就好了

from api_response.api_response import ApiResponse

def login(request):
    response = ApiResponse()
    if request.method == "POST"
    #code....
        return response.success("登录成功")
    else:
        return response.fail("不支持的方法")
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文