【发布时间】:2017-12-15 15:36:06
【问题描述】:
我创建了一个视图来编辑用户:
class UsersEditView(UpdateView):
model = User
fields = ['first_name', 'last_name', 'email', 'password']
success_url = reverse('user-list')
编辑此模型:
class User(AbstractUser):
email = EmailField(unique=True)
slug = AutoSlugField(populate_from='email', max_length=10, unique=True)
REQUIRED_FIELDS = []
USERNAME_FIELD = 'email'
我是这样定义网址的:
urlpatterns = [
path('', UsersListView.as_view(), name='user-list'),
path('new/', UsersCreateView.as_view(), name='user-new'),
path('edit/<str:slug>/', UsersEditView.as_view(), name='user-edit')
]
我这样测试它:
class EditUserTest(AbstractTest):
@classmethod
def setUpClass(cls):
super().setUpClass()
user = User(email='email@provider', first_name='Test', last_name='User', slug='slug', password='qqq')
user.save()
def test_edit_user(self):
response = EditUserTest.client.get(reverse('user-edit', args=('slug', )))
除了响应总是 404:
ipdb> response.status_code
404
那么,我错过了什么?
这是为 Django 2.0 准备的。
【问题讨论】:
-
您不应该在
setUpClass中创建用户。它应该进入setUp,因为它需要在每个测试用例中运行一次。您应该在测试方法本身中使用self.client。
标签: python django python-3.x django-views