当前位置:  开发笔记 > 后端 > 正文

基于Django类的视图 - 线程安全

如何解决《基于Django类的视图-线程安全》经验,为你挑选了1个好方法。

我对Java中的Web应用程序有一些经验.在servlet中,您必须将基于类的属性声明为final,因为它不是线程安全的.

当我尝试与基于Django类的视图进行比较时.假设下面的代码是线程安全的是否安全?我相信它的线程安全,但有些人让我知道我需要在Django中处理多线程应用程序的事项列表.

class MyFormView(View):
    form_class = MyForm
    initial = {'key': 'value'}
    template_name = 'form_template.html'

    def get(self, request, *args, **kwargs):
        form = self.form_class(initial=self.initial)
        return render(request, self.template_name, {'form': form})

    def post(self, request, *args, **kwargs):
        form = self.form_class(request.POST)
        person = Person()
        if form.is_valid():
            # 
            return HttpResponseRedirect('/success/')

        return render(request, self.template_name, {'form': form})
编辑-1

创建了一个新类,并在POST方法中启动

Class Person(object):name ='sample'



1> knbk..:

基于类的视图的类属性在所有线程之间共享,并且通常不是线程安全的.您应该将类​​属性视为只读属性,这也是Django所做的.这意味着您可以设置initial为字典,但不应修改此字典.传递给的参数也是如此View.as_view().

实例属性是线程安全的.每次调用视图时,都会创建一个视图类的新实例,该实例永远不会跨线程共享.这意味着您可以设置和修改实例属性,例如self.object,而不必担心并发线程.

推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有