drf技术扩展

一.技术点

  • xadmin管理后台
  • 国际化
  • 可视化api
  • api文档管理

二.安装

pip install djangorestframework
pip install markdown
# 图片处理
pip install pillow
# 过滤器
pip install django-filter
# drf的文档支持
pip install coreapi
# drf对象级别的权限支持
pip nstall django-guardian
# 后端服务器解决跨域问题
pip install django-cors-headers

三.项目目录

  • extra_apps (源码包)

  • apps (所有app)

  • media(保存图片)

  • db_tools(数据库相关)

    
    # 把extra_apps 和apps标记为sources root
    
    
    # pycharm文件夹右键点击mark diectory as->source root
    
    
    # settings加入
    
    import sys
    
    sys.path.insert(0,BASE_DIR)
    sys.path.insert(0,os.path.join(BASE_DIR, 'apps'))
    sys.path.insert(0,os.path.join(BASE_DIR, 'extra_apps'))
    

四.xadmin下载安装

#下载地址:
https://pan.baidu.com/s/1NuvdYSX-ENWzX_JfqibucA
#打开后将xadmin放入extra_apps中
#将txt文件放入项目根目录下,执行
pip install -r requirements.txt
下载相关依赖

settings.py

#需要添加的部分

#app
INSTALLED_APPS = [
    ....
    'xadmin',  #替换django后台管理
    'crispy_forms',
    'testapp',
    'rest_framework',
    'coreschema',
]


#中文支持,django1.8以后支持;1.8以前是zh-cn
LANGUAGE_CODE = 'zh-hans'  
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_L10N = True
USE_TZ = False

# 静态资源
STATIC_URL = '/static/'
# 图像
MEDIA_URL = "/media/"
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static"),
)
MEDIA_ROOT = os.path.join(BASE_DIR, "media")

urls.py

import xadmin

urlpatterns = [
    url('xadmin/', xadmin.site.urls),
]

创建testapp

#testapp/__init__.py
default_app_config = 'testapp.apps.TestappConfig'

#testapp/adminx.py
from xadmin import views
import xadmin
# 创建xadmin的最基本管理器配置,并与view绑定
class BaseSetting(object):
    # 开启主题功能
    enable_themes = True
    use_bootswatch = True
# 将基本配置管理与view绑定
xadmin.site.register(views.BaseAdminView,BaseSetting)

#testapp/apps.py
from django.apps import AppConfig
class TestappConfig(AppConfig):
    name = 'testapp'
    verbose_name = '用户'
终端执行
python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser

五.可视化api

#testapp/models.py

from django.db import models

class User(models.Model):
    uname = models.CharField(max_length=20)
    upwd = models.CharField(max_length=40)
    uemil = models.CharField(max_length=30)
    urelname =models.CharField(max_length=20,default='')
    uadr = models.CharField(max_length=100,default='')
    uphone = models.CharField(max_length=11,default='')

#testapp/serializer.py
from .models import User
from rest_framework import serializers

# API返回序列化后的接口字段
class UserSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = User
        fields = '__all__'

#testapp/views.py
from rest_framework import viewsets
from .serializer import UserSerializer
from .models import User

class UserViewSet(viewsets.ModelViewSet):
    queryset = User.objects.all()
    serializer_class = UserSerializer

#根路由
from django.conf.urls import url, include
from rest_framework import routers
from testapp.views import UserViewSet

router = routers.DefaultRouter()
router.register(r'users', UserViewSet)

urlpatterns = [
    url('xadmin/', xadmin.site.urls),
    url(r'^', include(router.urls)),
    url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')),
]

六.api文档管理

#根路由下添加
from rest_framework.documentation import include_docs_urls

urlpatterns = [
    .....
    url(r'docs/',include_docs_urls(title="后台管理")),
]

猜你喜欢

转载自blog.csdn.net/weixin_42042680/article/details/80328333
DRF