基于DRF+vue的登录界面

现在前后端分离的架构设计越来越流行,业界甚至出现了API优先的趋势。

显然API开发已经成为后端程序员的必备技能了,那作为Python程序员特别是把Django作为自己主要的开发框架的程序员,我十分推荐Django REST framework(DRF)这个API框架。

Django REST framework(DRF)框架文档齐全,社区较稳定,而且由于它是基于Django这个十分全面的框架而设计开发的,能够让开发者根据自己的业务需要,使用极少的代码量快速的开发一套符合RESTful风格的API,并且还支持自动生成API文档。

一、vue-cil部分





二、API部分

1、路由


from django.contrib import admin
from django.urls import path,include,re_path
from .apis import basic
from rest_framework.routers import SimpleRouter

router = SimpleRouter()
router.register('user',basic.LoginApi,'user')


# 路由
urlpatterns = [

]


urlpatterns += router.urls

 2、序列化

class LoginSerializer(serializers.ModelSerializer):
    class Meta:
        model = models.User
        fields = '__all__'

    pass

3、视图

class LoginApi(ViewSet):

    @action(methods=["POST"],detail=False)
    def login(self,request):
        # post提交的数据都在request.data
        useName = request.data.get("username")
        pwd  = request.data.get("password")
        # print(type(useName))
        # print(pwd)

        # 查找数据库是否存在
        user = models.User.objects.filter(username = useName,password=pwd).first()

        # 如果存在
        if user:
            # 随机生成不重复的id作为token
            token = str(uuid.uuid4())
            # user = user 这个去查找,如果能查到,则使用defauts更新,查不到则则新增
            user_token = models.UserToken.objects.update_or_create(defaults={'token':token},user=user)

            print('****')
            return Response(
                {'msg':'登录成功','code':100,'token':token},
            )
        else:
            return Response(
                {'msg': '账号或密码错误','code': 200,},
            )

        pass

4、模型

class User(models.Model):

    username = models.CharField(max_length=1024, blank=False)
    password = models.CharField(max_length=1024, blank=False)


class UserToken(models.Model):

    token = models.CharField(max_length=1024)
    user  = models.OneToOneField(to='User',on_delete=models.CASCADE)

三、跨域问题的解决

参考这个博客

四、文档

Some reasons you might want to use REST framework:

  • The Web browsable API is a huge usability win for your developers.
  • Authentication policies including packages for OAuth1a and OAuth2.
  • Serialization that supports both ORM and non-ORM data sources.
  • Customizable all the way down - just use regular function-based views if you don't need the more powerful features.
  • Extensive documentation, and great community support.
  • Used and trusted by internationally recognised companies including Mozilla, Red Hat, Heroku, and Eventbrite.

官方文档:django-rest-framework

你可能感兴趣的:(DRF接口学习,vue.js,javascript,前端)