2017-06-22 5 views
1

私はdjango 1.8を使用しています。私はビューの1つにdjango.views.generic.Viewクラスを使用しています。 urls.pyでdjangoクラスベースのビューはview_argsとview_kwargsを受け付けません

class CommonView(View): 
    func_name = 'view_func' 
    http_method_names = ["get", "post"] 
    def get(self, request, *args, **kwargs): 
     return render(request, 'template.html', {}) 

は、私は私が眺め応答でいくつかの作業をやっているミドルウェアを書かれており、process_view方法

class CommonMiddleware(object): 
    def process_view(self, request, view_func, view_args, view_kwargs): 
     response = view_func(request, *view_args, **view_kwargs) 
     """ Do something""" 
     return response 

をオーバーライドしますが、この行response = view_func(request, *view_args, **view_kwargs)でいる

url(r'^common/$',CommonView), 

を追加しました私はエラーが発生している

__init__() takes exactly 1 argument (3 given) 
Request Method: POST 
Request URL: http://127.0.0.1:8000/common/ 
Django Version: 1.8 
Exception Type: TypeError 
Exception Value:  
__init__() takes exactly 1 argument (3 given) 

とその前に私はビュー機能のfunc_nameをチェックする必要があります。しかし、私はfunc_nameアトリビュートをview_funcから取得しようとしています。AttributeErrorそのCommonView has no attribute func_nameを取得していますが、すべての機能ベースのビューから取得しています。

答えて

2

間違いは、あなたがたURL

+0

からそれを呼び出している間、あなたのクラスベースのビューでas_view()を追加するのを忘れ

url(r'^common/$',CommonView.as_view()), 

を使用する必要があり、このラインで

url(r'^common/$',CommonView), 

あるああ、それはあります愚かな間違い。エラーを見つけるために数時間を費やしました。 –

関連する問題