我正在使用django 1.8。我在我的一个视图中使用django.views.generic.View
类。
class CommonView(View):
func_name = 'view_func'
http_method_names = ["get", "post"]
def get(self, request, *args, **kwargs):
return render(request, 'template.html', {})
在urls.py中我添加了
url(r'^common/$',CommonView),
我编写了一个中间件,我正在使用视图响应和覆盖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)
我收到错误
__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
,而我从所有人那里得到它基于功能的视图。
答案 0 :(得分:2)
错误就在这一行
url(r'^common/$',CommonView),
你必须使用
url(r'^common/$',CommonView.as_view()),
您忘记在从网址
调用时,使用基于类的视图添加as_view()