python - /website/login/:login() 的 TypeError 采用 1 个位置参数,但给出了 2 个
问题描述
我正在使用 Django 创建一个网站,我是它的初学者。
视图.py:
def login(request):
if request.method == "POST":
form = AuthenticationForm(data=request.POST)
if form.is_valid():
user=form.get_user()
login(request,user)
if 'next' in request.POST:
return HttpResponseRedirect(reverse(request.POST.get('next')))
else:
return HttpResponseRedirect(reverse('website:books'))
else:
return render(request,'website/login.html')
else:
form=AuthenticationForm()
return render(request,'website/login.html',{'form':form})
我得到的错误是:
File "D:\playground\blog\website\views.py", line 16, in login
login(request,user)
TypeError: login() takes 1 positional argument but 2 were given
[10/Mar/2020 14:34:57] "POST /website/login/ HTTP/1.1" 500 74342
我错过了什么?
解决方案
问题是您的自定义函数称为“登录”,然后您尝试调用django.contrib.auth
也称为.django 的 django 函数login
。
看看那条线,你打电话login(request,user)
所以修复就是其中之一
- 将您的视图重命名为登录以外的其他名称
- 在导入中使用“as”将现有函数别名为其他函数。EG
from django.contrib.auth import login as django_login
然后更改login(request,user)
为django_login(request,user)
推荐阅读
- javascript - UnhandledPromiseRejectionWarning:错误:执行上下文被破坏,很可能是因为导航
- angular - 使用来自子 Angular 应用程序的共享模块的组件(嵌套应用程序)
- reactjs - 将旧版 React 0.59.X 代码升级到 0.63.X
- python - 将 Django 代码部署到 Heroku 时出现错误代码 H10
- python - Python 脚本无法在我的计算机上运行特定文件
- javascript - 无法读取未定义的属性“样式” - Javascript .addEventListener()
- spring-boot - Spring boot 中的 PESSIMIST_WRITE 不限制其他会话中的读取
- reactjs - TypeError:尝试创建parargaph时无法读取null的属性'appendChild'
- mysql - 在 MySQL 中使用存储过程创建明年的日历表
- android - 在Android的ViewPager中自动双向滑动?