【发布时间】:2020-06-22 02:30:49
【问题描述】:
我更喜欢实现 A 和 C 而不是 B 和 D,因为我想在 html css 文件中为表单实现自定义 css,而不必处理 forms.py 或在 python 中格式化 css . 与 B 和 D 相比,A 和 C 是否存在任何安全风险?使用 A 和 C 还有其他缺点吗?
#A
if request.method == "POST":
user = authenticate(email=request.POST["email"], password=request.POST["password"])
#B
if request.method == "POST":
if form.is_valid():
email = form.cleaned_data['email']
password = form.cleaned_data['password']
user = authenticate(email=email, password=password)
#C
if request.method == "POST":
contact_name = request.POST["contact"]
#D
if request.method == "POST":
if form.is_valid():
contact_name = form.cleaned_data['contact']
【问题讨论】:
-
未经验证的未经处理的用户输入总是是一个安全问题,尤其是在网络上。而且您不必绕过表单验证来“实现您的自定义 css” - 该主题不乏资源。
-
我可以在没有forms.py的情况下为A和C实现is_valid函数吗?我将表单直接输入到 html 模板中,而 A 和 C 中没有 forms.py。
-
然后重做你的模板。表单验证并非易事,Django 表单确实有效,所以不要再尝试重新发明众所周知的方轮了。
-
好的,我会这样做的。你能确认我应该总是有一个 forms.py 来在 Django 中正确实现表单吗?
-
将表单放在哪里并不重要(即使约定是将它们放在 forms.py 模块中),重要的是(正确)使用表单进行用户输入。如果您关心安全性和可维护性,那就是......
标签: django django-forms django-views django-authentication