来自 Django 点击劫持中间件的错误:表单没有属性 'get'
Error from Django clickjacking middleware: Form has no attribute 'get'
我有一个包含 3 个字段的表单:
class AjoutBanque(forms.Form):
nom=forms.CharField()
agence=forms.CharField()
rib=forms.IntegerField()
我的看法:
def AjoutBanq(request):
if request.user.is_active :
form2=AjoutBanque(request.POST)
if form2.is_valid():
print("valid")
clt= banque(nom=form2.cleaned_data.get('nom'),agence=form2.cleaned_data.get('agence'),rib=form2.cleaned_data.get('rib'))
clt.save()
return redirect('/banque/')
提交我的表单时出现错误:
'AjoutBanque' object has no attribute 'get'
这是回溯:
Traceback:
File "C:\Users\users MGE\AppData\Local\Programs\Python\Python36-32\lib\site-
packages\django\core\handlers\base.py" in get_response
131. response = middleware_method(request, response)
File "C:\Users\users MGE\AppData\Local\Programs\Python\Python36-
32\lib\site-packages\django\middleware\clickjacking.py" in process_response
32. if response.get('X-Frame-Options') is not None:
Exception Type: AttributeError at /addbanque
Exception Value: 'AjoutBanque' object has no attribute 'get'
我的网址:
url(r'^banque',views.BanqueViews.as_view(), name='banque'), //url that contains the form
url(r'addbanque$',views.AjoutBanque, name='banqueajout')//url of submit button of the form.
我不知道这个错误是从哪里来的,你知道吗?
此代码应该有效:
从 django.http 导入 HttpResponse
def AjoutBanq(request):
if request.user.is_active :
form2=AjoutBanque(request.POST)
if form2.is_valid():
print("valid")
clt= banque(nom=form2.cleaned_data.get('nom'),agence=form2.cleaned_data.get('agence'),rib=form2.cleaned_data.get('rib'))
clt.save()
return redirect('/banque/')
return HttpResponse('')
你必须在你的视图中 return HttpResponse,否则 django 中间件(在这种情况下 django.middleware.clickjacking.XFrameOptionsMiddleware
会抛出错误。
您的观点是 AjoutBanq
,您的表格是 AjoutBanque
。在您的网址中,您使用的是表单而不是视图。应该是:
url(r'addbanque$',views.AjoutBanq, name='banqueajout')//url of submit button of the form.
我建议您将表单重命名为 AjoutBanqueForm
以减少混淆的可能性。
我有一个包含 3 个字段的表单:
class AjoutBanque(forms.Form):
nom=forms.CharField()
agence=forms.CharField()
rib=forms.IntegerField()
我的看法:
def AjoutBanq(request):
if request.user.is_active :
form2=AjoutBanque(request.POST)
if form2.is_valid():
print("valid")
clt= banque(nom=form2.cleaned_data.get('nom'),agence=form2.cleaned_data.get('agence'),rib=form2.cleaned_data.get('rib'))
clt.save()
return redirect('/banque/')
提交我的表单时出现错误:
'AjoutBanque' object has no attribute 'get'
这是回溯:
Traceback:
File "C:\Users\users MGE\AppData\Local\Programs\Python\Python36-32\lib\site-
packages\django\core\handlers\base.py" in get_response
131. response = middleware_method(request, response)
File "C:\Users\users MGE\AppData\Local\Programs\Python\Python36-
32\lib\site-packages\django\middleware\clickjacking.py" in process_response
32. if response.get('X-Frame-Options') is not None:
Exception Type: AttributeError at /addbanque
Exception Value: 'AjoutBanque' object has no attribute 'get'
我的网址:
url(r'^banque',views.BanqueViews.as_view(), name='banque'), //url that contains the form
url(r'addbanque$',views.AjoutBanque, name='banqueajout')//url of submit button of the form.
我不知道这个错误是从哪里来的,你知道吗?
此代码应该有效: 从 django.http 导入 HttpResponse
def AjoutBanq(request):
if request.user.is_active :
form2=AjoutBanque(request.POST)
if form2.is_valid():
print("valid")
clt= banque(nom=form2.cleaned_data.get('nom'),agence=form2.cleaned_data.get('agence'),rib=form2.cleaned_data.get('rib'))
clt.save()
return redirect('/banque/')
return HttpResponse('')
你必须在你的视图中 return HttpResponse,否则 django 中间件(在这种情况下 django.middleware.clickjacking.XFrameOptionsMiddleware
会抛出错误。
您的观点是 AjoutBanq
,您的表格是 AjoutBanque
。在您的网址中,您使用的是表单而不是视图。应该是:
url(r'addbanque$',views.AjoutBanq, name='banqueajout')//url of submit button of the form.
我建议您将表单重命名为 AjoutBanqueForm
以减少混淆的可能性。