django - 如何为 django 类视图获取方法提供上下文
问题描述
我有一个基于类的视图,我想为其提供一些上下文,但我不知道如何实现这一点下面是 views.py
class Dashboard(LoginRequiredMixin, View):
def get(self, request):
if request.user is not None and len(request.user.payment_set.all()):
if request.user.is_active and request.user.payment_set.first().active:
print(eligible_to_review(self.request))
return render(request, 'main.html')
else:
return redirect('home')
else:
return redirect('membership')
如何将上下文传递给该视图以便在 html 文件中使用它
解决方案
我认为最干净的方法是用 TemplateView 替换 View 的继承——你可以提供一个 get_context_data 方法来做你需要的任何额外的上下文内容。
理想情况下,您不需要提供 get() ,但由于您在那里有一些额外的重定向逻辑,您可能需要在那里。我猜您可能希望qualified_to_review() 在get_context_data 中,因为不清楚为什么要打印它(到哪个终端?)。同样考虑到 LoginRequiredMixin 的使用,您可以确信当您到达 get() 时 request.user 既已设置又处于活动状态 - 因此测试的这些部分是可减少的。
class Dashboard(LoginRequiredMixin, TemplateView):
template_name="main.html"
def get_context_data(self, **kwargs):
context=super().get_context_data(**kwargs)
context["whatever"]="Some stuff" # This is where you add extra context you need.
return context
def def get(self, request, *args, **kwargs):
if len(request.user.payment_set.all()): #request.user is definitely set here!
if request.user.payment_set.first().active: #request.user is also active!
print(eligible_to_review(self.request))
return super().def get(request, *args, **kwargs)
else:
return redirect('home')
else:
return redirect('membership')
推荐阅读
- c - 如何修复“可变大小的对象可能未初始化”?
- jdbc - Spark - 尝试写入 Redshift 时出现只读错误
- azure-devops - Azure DevOps - 在测试结果发布后发送电子邮件通知
- json - Azure 数据工厂在动态内容字段中添加具有 JSONPath 表达式值的逻辑运算符
- java - 由于 groovy.lang.MissingPropertyException,Gradle 同步失败
- python - 初学者 Python 股票筛选器
- apache-spark - 如果我的驱动程序或执行程序在运行 Spark 应用程序时在 Spark 中丢失,会发生什么情况?
- php - 选中/取消选中复选框后刷新 PHP 页面
- c - 如何在内联汇编中使用 INT %0 和来自 C 变量的中断号?
- mongodb - MongoDB - 重命名与正则表达式匹配的列名