如何通过slug加载基于类的视图

2024-06-25 23:06:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了一个视图来编辑用户:

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'

我这样定义url:

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准备的


Tags: pathnameview编辑emailaspasswordedit