美文网首页
xadmin django

xadmin django

作者: Oscar_hailiang | 来源:发表于2019-09-30 15:39 被阅读0次
创建python环境
conda create -n annotation python=3.6
source activate annotation
conda install Django==2.2.5
pip install djangorestframework
pip install markdown
pip install Pillow
创建工程
mkdir django-drf-react-quickstart
cd django-drf-react-quickstart
django-admin startproject drf_react .  # 创建工程
django-admin startapp leads  # 创建app
  • 打开 ./drf_react/settings.py ,并将新增的app放在 INSTALLED_APPS中:
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'leads', # 新增leads app
]
  • 打开 ./leads/models.py然後建立Lead model:
class Lead(models.Model):
    name = models.CharField(max_length=100)
    email = models.EmailField()
    message = models.CharField(max_length=300)
    created_at = models.DateTimeField(auto_now_add=True)
  • 安装数据库
略....
  • 安装数据库的django驱动程序
conda install psycopg2 # postgre
install mysqlclient  # mysql
pip install pymysql
  • 打开 ./drf_react/settings.py ,并设置数据库配置
'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'drf_react',
        'USER': 'root',
        'PASSWORD': '密碼',
        'HOST':'127.0.0.1'

    }
  • 打开 ./drf_react/settings.py ,并设置本地化
# 語言改為中文
LANGUAGE_CODE = 'zh-hans'

# 時區改為上海
TIME_ZONE = 'Asia/Shanghai'

USE_I18N = True

USE_L10N = True

# 資料庫儲存使用時間,True時間會被存為UTC的時間
USE_TZ = False
同步数据库
python manage.py makemigrations leads
python manage.py migrate
序列化
  • 建立一個新檔案: ./leads/serializers.py.
from rest_framework import serializers
from leads.models import Lead
class LeadSerializer(serializers.ModelSerializer):
    class Meta:
        model = Lead
        fields = ('id', 'name', 'email', 'message')  # fields = '__all__'
建立视图
# ./leads/views.py
from leads.models import Lead
from leads.serializers import LeadSerializer
from rest_framework import generics
class LeadListCreate(generics.ListCreateAPIView):
    queryset = Lead.objects.all()
    serializer_class = LeadSerializer
建立URL映射
# ./drf_react/urls.py
from django.urls import path, include
urlpatterns = [
    path('', include('leads.urls')),
]
./drf_react/leads/urls.py
from django.urls import path
from . import views
urlpatterns = [
    path('api/lead/', views.LeadListCreate.as_view() ),
]
注册rest_framework
# ./drf_react/settings.py
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'leads', 
    'rest_framework' # 加入 rest framework
]
建立实验数据

Django fixtures

  1. 建立资料文件夹
mkdir ./leads/fixtures
gedit ./leads/fixtures/leads.json
# 复制并填写内容如下:
# ./leads/fixtures/leads.json
[
    {
        "model": "leads.lead",
        "pk": 1,
        "fields": {
            "name": "mtianyan",
            "email": "1147727180@qq.com",
            "message": "I am a happy pythoner",
            "created_at": "2019-01-07 00:00:00"
        }
    },
    {
        "model": "leads.lead",
        "pk": 2,
        "fields": {
            "name": "Tom",
            "email": "tomsomething@gmail.com",
            "message": "I want to talk about a Python project",
            "created_at": "2018-01-14 00:00:00"
        }
    }
]
  1. 载入数据
# 程序为自动查询要填充数据库的数据
python manage.py loaddata leads
  1. 预览效果
python manage.py runserver

http://127.0.0.1:8000/api/lead/

安装xadmin后台
  1. 下载源码,放入工程目录中
mkdir ./extract_apps
git clone -b django2 https://github.com/sshwsfc/xadmin.git ./extract_apps
pip install -r ./extract_apps/requirements.txt
pip install -r ./extract_apps/xadmin/requirements.txt
  1. 注册app
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'leads',          # 新增leads app
    'rest_framework', # 新增rest framework
    'xadmin',         # 新增 xadmin
    'crispy_forms',   # 新增 xadmin
]
  1. 注册urls
# django-drf-react-quickstart\drf_react\urls.py
from django.urls import path, include
import xadmin

urlpatterns = [
    path('', include('leads.urls')),
    path('xadmin/', xadmin.site.urls),
]
  1. 创建应用app对应的admin
  gedit ./leads/adminx.py  # 创建新文件
#  ./leads/adminx.py
import xadmin
from xadmin import views
from .models import Lead
class BaseSetting(object):
    """xadmin的基礎資訊配置"""
    enable_themes = True  # 開啟主題功能
    use_bootswatch = True 

class GlobalSettings(object):
    """xadmin通用資訊配置"""
    site_title = "Leads Xadmin"
    site_footer = "mtianyan@qq.com"

# 註冊設定資訊到View
xadmin.site.register(views.BaseAdminView, BaseSetting)
xadmin.site.register(views.CommAdminView, GlobalSettings)

class LeadAdmin(object):
    """
    list_display: 後臺展示哪些欄位
    search_fields: 後臺可搜尋哪些欄位
    list_filter: 後臺過濾器可使用哪些欄位
    """
    list_display = ['name', 'email','message']
    search_fields = ['name', 'email','message']
    list_filter = ['name', 'email','message','created_at']

xadmin.site.register(Lead, LeadAdmin)
  1. 同步数据库
python manage.py makemigrations
python manage.py migrate
  1. 创建超级管理员
python manage.py createsuperuser
帐号:admin
密码:admin
在线API文档
  1. 安装软件包
pip install coreapi
  1. 配置url
# django-drf-react-quickstart\drf_react\urls.py
from django.urls import path, include
import xadmin
from rest_framework.documentation import include_docs_urls # new 

urlpatterns = [
    path('', include('leads.urls')),
    path('xadmin/', xadmin.site.urls),
    path('api/docs/', include_docs_urls(title='Lead 线上API文件')), # new
]
  1. 配置model
# django-drf-react-quickstart\drf_react\models.py
from django.db import models

# Create your models here.
class Lead(models.Model):
    name = models.CharField(max_length=100,verbose_name="lead名字", help_text="lead名字")
    email = models.EmailField(verbose_name="郵箱", help_text="郵箱")
    message = models.CharField(max_length=300, verbose_name="資訊", help_text="資訊")
    created_at = models.DateTimeField(auto_now_add=True,verbose_name="建立時間", help_text="建立時間")

参考文献
https://www.cnblogs.com/lyq-biu/p/9513888.html

常见错误

  1. AutoSchema' object has no attribute 'get_link'
    解决方案:在setting.py中添加如下代码
REST_FRAMEWORK = { 'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema' }

相关文章

网友评论

      本文标题:xadmin django

      本文链接:https://www.haomeiwen.com/subject/macqpctx.html