【发布时间】:2018-05-18 12:59:36
【问题描述】:
我有一个基于类的视图定义为:
class Myview(LoginRequiredMixin, View):
def post():
#.......
为了测试这个视图,我尝试了这个
class MyViewTest(TestCase):
def setUp(self):
self.factory = RequestFactory()
self.user = User.objects.create_user(
username='jacob', email='soos@i.com', password='vvggtt')
def view_test(self):
# Create an instance of a POST request.
request = self.factory.post('/my-url/')
request.user = self.user
response = MyView(request)
print (response,"**")
self.assertEqual(response.status_code, 200)
但这给出了这个错误。
response = MyView(request)
TypeError: __init__() takes 1 positional argument but 2 were given
我明白为什么会出现这个错误(MyView 的导师有 2 个 ars),但我该如何删除它?我无法获得有关搜索的详细信息。
【问题讨论】:
-
您是否在
MyView
中实现了自己的__init__
方法?如果可以的话可以发一下吗? -
通常
request
不会被传递给类构造函数;见https://docs.djangoproject.com/en/2.0/ref/class-based-views/base/#django.views.generic.base.View.as_view
-
@user234461 不,我没有在 myview 中实现 init
-
是的,
MyView(request)
是错误的。构造函数不接受请求。见github.com/django/django/blob/master/django/views/generic/… -
这在我删除
content_type
时有效
标签: django django-class-based-views django-testing