为登录函数编写Django API视图

2024-05-16 20:19:10 发布

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

我没有任何编写API的经验,所以我需要为登录函数编写API。我需要输入登录名和密码,如果正确的话,我就有进入网站的权限。以下是我拥有的:

这是我的观点

class CustomLoginView(LoginView):
    template_name = 'accounts/sign_in.html'
    form_class = SigninForm

    def form_valid(self, form):
        super().form_valid(form)
        user = form.get_user()
        if form.get_cook_role():
            user.profile.cook_role = form.get_cook_role()

        if form.get_role():
            user.profile.role = form.get_role()

        user.profile.save()
        auth_login(self.request, form.get_user())
        return HttpResponseRedirect(self.get_success_url())

这就是我的用户模型:

class Profile(ProfileMixin, models.Model):
    organization = models.ForeignKey(Organization, null=True, on_delete=models.CASCADE)
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    online = models.BooleanField(default=False)
    avatar = models.ImageField(upload_to='profile/avatars/', null=True, blank=True)
    gender = models.CharField(max_length=10, blank=True,
                              choices=GENDER_CHOICES.get_choices())
    role = models.PositiveIntegerField('Роль пользователя',
                                       default=STAFF_ROLES.COOK,
                                       choices=STAFF_ROLES.choices)
    cook_role = models.ForeignKey(CookRole, verbose_name='Роль на кухне',
                                  null=True, blank=True, related_name='users',
                                  on_delete=models.CASCADE)
    birthday = models.DateField(null=True, blank=True)

这是我的网址

urlpatterns = [
    url(r'^signin/', views.CustomLoginView.as_view(), name='signin'),
    url(r'^signout/$', views.sign_out, name='signout'),
]

请描述我应该遵循的步骤,以便编写API,我可以用它登录到系统


Tags: nameselfformapitruegetmodelsprofile