django - 在 Django FormView 中获取当前用户
问题描述
我正在建立一个列表站点,每个用户都链接到一家公司。在用户可以发布新列表之前,它必须已经购买了积分。如果没有信用,FormView 应该显示一个带有 0 信用通知的模板,但是如果信用 > 0 则应该显示实际表单。
我正在努力尝试获取FormView
班级本身的当前用户。我知道可以通过form_valid
method完成user = self.request.user
,但这意味着用户必须先填写整个表单并在检查他是否有足够的积分后提交。我试图弄清楚如何在表格填写和提交之前进行检查。我找不到资源我怎么能做这样的事情:
class CreateAd(LoginRequiredMixin, FormView):
if currents_user.ad_credits > 0:
template_name = 'ads/ad_form.html'
form_class = AdForm
success_url = '/'
else:
template_name = 'ads/not_enough_credits.html'
form_class = AdForm
success_url = '/'
解决方案
您可以使用get_form_kwargs
:
def get_form_kwargs(self):
kwargs = super().get_form_kwargs()
user = self.request.user
kwargs['initial'] = ... # here update the form kwargs based on user
return kwargs
推荐阅读
- node.js - 使用 Apps Platform 将 nodejs 部署到 Digital Ocean 时出现问题
- typescript - Vuex 在刷新后持久丢失数据
- c - 通过将语句嵌入到循环头本身来优化循环的 C
- highcharts - 基于数据分组的 Highstock 导出 csv(export-data 模块)
- javascript - 为什么 x *和* z = 3?
- python - Requests-HTML (Python) 的协程问题
- kotlin - For 循环必须有一个 iterator()
- algorithm - 计算数组元素对,其中一个是另一个的倍数
- javascript - 无法将新文档设置为 Firestore 中的集合
- jquery - jQuery长度属性根本不起作用