Django 1.9类型错误__init __()需要1个位置参数,但有2个给出 - 类装饰问题
上下文的一点:我试图创建一个CreateView页面供用户输入信息,同时使用Django 1.9网址'/ profile /'。Django 1.9类型错误__init __()需要1个位置参数,但有2个给出 - 类装饰问题
当用户未登录时,我转到/ profile/url,然后它会按预期将我重定向到登录页面。然而,当我登录到网站,然后去/型材/那么它会显示此错误:
TypeError at /profile/
__ init __() takes 1 positional argument but 2 were given
目前,我正在装饰用method_decorator类,如提及docs here:https://docs.djangoproject.com/en/1.10/topics/class-based-views/intro/#decorating-the-class。
这是我views.py:
@login_required(login_url = "/login/", redirect_field_name = None)
@method_decorator(login_required, name = 'dispatch')
class SpkCreateView(CreateView):
form_class = SpkCreateForm
template_name = 'userprofile/spk_form.html'
def get(self, request):
form = self.form_class(None)
return render(request, self.template_name, {'form': form})
def post(self, request):
form = self.form_class(request.POST)
if form.is_valid():
spk_fname = form.cleaned_data['spk_fname']
spk_lname = form.cleaned_data['spk_lname']
为method_decorator“名字”的说法也被绊倒我,所以我不知道它是否是做些什么。
如果有人有任何解决方案,那么谢谢!
编辑:
改变@login_required(login_url = "/login/", redirect_field_name = None) @method_decorator(login_required, name = 'dispatch')
到@method_decorator(login_required(login_url = "/login/", redirect_field_name = None), name = 'dispatch')
,这是从Powershell的
Internal Server Error: /profile/
Traceback (most recent call last):
File "C:\Users\Programs\Python\Python36-32\lib\site-packag
es\django\core\handlers\base.py", line 149, in get_response
response = self.process_exception_by_middleware(e, request)
File "C:\Users\Programs\Python\Python36-32\lib\site-packag
es\django\core\handlers\base.py", line 147, in get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
TypeError: __init__() takes 1 positional argument but 2 were given
[28/Sep/2016 22:20:22] "GET /profile/ HTTP/1.1" 500 57532
你跟login_required
既没有@method_decorator
装饰类的回溯。您需要将您要使用到method_decorator
装饰,在这种情况下:
@method_decorator(login_required(login_url="/login/", redirect_field_name=None), name='dispatch')
class SpkCreateView(CreateView):
...
这像以前一样仍然给出了同样的类型错误,遗憾的是 - 谢谢你,虽然。有任何其他想法可能是错误的或? – jayt
@jayt请显示你的新尝试和追踪。 – knbk
我已经在问题中进行了编辑以向您展示我做了什么 – jayt