django - 在基于类的视图中编写“request.POST.post”的正确方法
问题描述
我正在尝试使用 CBV。我是新手。我在请求表单内的 POST 数据时遇到问题。
这是我的看法:
form_class = LocatarioForm
template_name = 'contrato/locatario_form.html'
def get_initial(self):
return {
'contrato': self.kwargs["pk"]
}
def post(self, request, pk):
segundolocatario = request.POST['segundolocatario']
return segundolocatario
def get_success_url(request):
# if request.POST.post('segundolocatario') == 'Sim'
# return reverse('contrato:locatario', kwargs={'pk': self.object.pk})
return reverse('contrato:conjugec', kwargs={'pk': self.object.pk})
这是模板:
<form method="post">
{% csrf_token %}
{{form}}
<label for="segundolocatario">Deseja cadastrar um segundo locatário para este contrato?</label>
<select name="segundolocatario" id="">
<option value="sim">Sim</option>
<option value="nao">Não</option>
</select>
<br><br>
<button type="submit">Próxima etapa</button>
</form>
我需要请求“segundolocatario”来控制我的模板。
如何在 CBV 中做到这一点?谢谢你。
解决方案
我认为您还没有掌握基于类的视图的基础知识。除非您从View
哪个是所有通用视图的基类继承,否则您不应该覆盖 get 和 post 方法(它们根据类填充了一些样板文件)。
假设你使用FormView
,你应该使用form_valid
方法。此方法以form
参数为参数,您可以从中获取经过验证的发布数据,使用form.cleaned_data
.
我建议您查看 Django 文档以了解如何覆盖这些方法。有一个很棒的网站显示了 CBV 的所有内部属性和方法,因此您可以更好地理解它们。
推荐阅读
- ios - 反应原生
将“fff”更改为奇怪的线符号? - elasticsearch - 如何忽略动态字段进行索引但需要存储值?
- python-3.x - 是否可以根据烧瓶中的路线动态更改日志文件位置?
- mysql - 为什么 UPDATE id_order_state = 4 会修改所有字段?
- oracle - 如何使用 Okta 或 Pingfederate 通过 Oracle Smartview 配置 SSO?
- c++ - C++ map,使用 const 引用作为值类型,这里有什么问题?
- pdf - PDF Acrobat 验证签名
- python - Windows 上的 Python - 以编程方式打开文件资源管理器时获取正确进程 ID 的问题
- vscode-settings - 用于 Java 远程开发的 VS 代码设置
- if-statement - 如何在 Discord JS 中创建有效的 AND 语句?