You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django登录页报错:__init__()仅接受1个位置参数但传入2个

解决Django登录页面的TypeError: init() takes 1 positional argument but 2 were given问题

嘿,我看到你跟着《Python Crash Course》开发Learning Log应用时,访问登录页面碰到了这个TypeError错误。别慌,这个问题其实是类视图的使用方式不对导致的,咱们分分钟就能搞定它。

问题根源

在你的urls.py里,你直接把LoginView类传给了url()函数,但Django的类视图不能这么直接用——它需要通过.as_view()方法转换成可调用的视图函数。如果直接传递类本身,Django会尝试实例化这个类,而你传入的{'template_name':'users/login.html'}参数会被当成位置参数传给__init__方法,这就触发了参数不匹配的错误。

修复后的urls.py代码

把LoginView改成LoginView.as_view()就可以解决问题,修改后的代码如下:

from django.conf.urls import url
# Importing the default login view provided by Django
from django.contrib.auth.views import LoginView
from .import views

app_name = 'users'
urlpatterns =[
    # Login page
    url(r'^login/$', LoginView.as_view(template_name='users/login.html'), name='login'),
]

补充说明

我检查了你的login.html和base.html代码,逻辑都是没问题的。只要修复urls里类视图的调用方式,登录页面就能正常加载,你可以继续推进后续的功能开发啦。

内容的提问来源于stack exchange,提问作者Ayush Hiremani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 19:32:55