python - Django:将变量从get_context_data()传递到post()

原文 标签 python django

变量在get_context_view()中定义,因为它需要id来访问正确的数据库对象:

class FooView(TemplateView):
  def get_context_data(self, id, **kwargs):
    ---
    bar = Bar.objects.get(id=id)
    ---

  def post(self, request, id, *args, **kwargs):
    # how to access bar?
    # should one call Bar.objects.get(id=id) again?

如何将bar变量传递给post()
试图将其保存为fooview的字段,并通过self.bar访问它,但这不起作用。self.bar不可见

最佳答案

你应该把它倒过来。如果在bar中需要post(),则需要在此处创建它:

class FooView(TemplateView):
    def get_context_data(self, **kwargs):
        bar = self.bar

    def post(self, request, id, *args, **kwargs):
        self.bar = Bar.objects.get(id=id)
        ...

post()是在get_context_data之前调用的,这就是如果在post中定义它,则get_context_data看不到它的原因。

相关文章:

python - 引用CSV header 字符串以调整列格式

python - 为什么此计时器仅打印最终结果而不是每秒更新一次?

python - 将Google-Ads API GoogleAdsRow转换为json吗?

python - 在python中计算此总和的最有效方法

django - Django-增加FileField的长度

python - 如何在Django中将2列求和get_context_data()

python - Django安装错误: View 不可调用

python - 在Django 3.0中将任一模式与re_path匹配

python - 在Django中添加路径以创建更多 View

django - python social auth和django,使用Facebook api 2.4清空电子邮件