2016-09-28 69 views
0

上下文的一点:我试图创建一个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 

回答

0

你跟login_required既没有@method_decorator装饰类的回溯。您需要将您要使用到method_decorator装饰,在这种情况下:

@method_decorator(login_required(login_url="/login/", redirect_field_name=None), name='dispatch') 
class SpkCreateView(CreateView): 
    ... 
+0

这像以前一样仍然给出了同样的类型错误,遗憾的是 - 谢谢你,虽然。有任何其他想法可能是错误的或? – jayt

+0

@jayt请显示你的新尝试和追踪。 – knbk

+0

我已经在问题中进行了编辑以向您展示我做了什么 – jayt

相关问题