from django.contrib import admin
from myapp import models
# Register your models here.
admin.site.register(models.BookInfo)
admin.site.register(models.User)
serializer.py
import imp
from rest_framework import serializers
from myapp.models import *
class UserSerializer(serializers.Serializer):
name = serializers.CharField()
tag = serializers.CharField()
create_time = serializers.CharField()
def create(self,validated_data): # validated_data是自带的参数,序列化器帮忙传的,就是验证完的数据
# 这里的写法和视图中没什么区别,只是拿到序列化器中来写了,需要在上面导入模型类 import User
# 本来validated_data是{'name':'ybc','age':18}, **打散,之后的validated_data是 nam=ybc, age=18
result = User.objects.create(**validated_data)
# 把添加的数据返回给函数调用处
return result
def update(self,instance,validated_data):
instance.name=validated_data.get('name')
instance.tag=validated_data.get('tag')
instance.create_time=validated_data.get('create_time')
instance.save() # 模型的保存
return instance
class BookInfoSerializer(serializers.Serializer):
"""书籍的序列化器"""
# 序列化器中的字段可以比模型类多,也可以比模型类少
id = serializers.IntegerField(label="ID", read_only=True)
btitle = serializers.CharField(label="标题", max_length=50)
bcontent = serializers.CharField(label="内容", required=True)
bread = serializers.IntegerField(label="阅读量", required=False)
bprice = serializers.DecimalField(label="价格", max_digits=6, decimal_places=2, required=False)
bpub_date = serializers.DateTimeField(label="发布日期", required=False)
image = serializers.ImageField(label="图片", required=False)
# class UserSerializer(serializers.ModelSerializer):
# class Meta:
# model = User
# fields = '__all__'
# def create(self,validated_data): # validated_data是自带的参数,序列化器帮忙传的,就是验证完的数据
# # 这里的写法和视图中没什么区别,只是拿到序列化器中来写了,需要在上面导入模型类 import User
# # 本来validated_data是{'name':'ybc','age':18}, **打散,之后的validated_data是 nam=ybc, age=18
# result = User.objects.create(**validated_data)
# # 把添加的数据返回给函数调用处
# return result
# def update(self,instance,validated_data):
# instance.name=validated_data.get('name')
# instance.tag=validated_data.get('tag')
# instance.save() # 模型的保存
# return instance
views.py
from email import header
from lib2to3.pgen2 import driver
from django.db.models import Q, query
from requests import head
from myapp.models import *
from rest_framework.viewsets import GenericViewSet
from rest_framework.decorators import action
from rest_framework.response import Response
from rest_framework import pagination #分页
from myapp.serializer import *
import json
# Create your views here.
class HelloWorldViewSet(GenericViewSet):
queryset=''
@action(detail=False,methods=['GET'])
def front(self,request):
all_data = User.objects.all()
# single_res = UserSerializer(instance=all_data.first())
# print(single_res.data)
self.queryset = UserSerializer(all_data,many=True).data
# res={'single':single_res,'all':all_res}
return Response(self.queryset)
@action(detail=False,methods=['GET'])
def reverse_create(self,request):
data=[
{
"name": "李四2",
"tag": "老师",
"create_time": "555555555555"
},
{
"name": "王五2",
"tag": "学生",
"create_time": "44444444444"
}
]
serobj = UserSerializer(data=data,many=True) # 反序列化用data,序列化用instance,可以不写,默认传的就是instance
serobj.is_valid() # 验证数据
self.queryset=serobj.validated_data
# 执行数据库操作,save源码会根据实例化序列器对象中是否传递instance而自动调用的create或者update方法,如果没有传递,就是create方法,此处没传,所以是create
serobj.save()
print(serobj.validated_data) # 可以拿到通过的数据
print(serobj.errors) # 可以拿到错误的信息
return Response(self.queryset)
@action(detail=False,methods=['GET'])
def reverse_update(self,request):
old_data=User.objects.get(name='张三66')
# res=UserSerializer(instance=old_data).data
new_data={
"name": "张三66",
"tag": "老师666",
"create_time": "666"
}
# 执行数据库操作,save源码会根据实例化序列器对象中是否传递instance而自动调用的create或者update方法,如果没有传递,就是create方法,此处没传,所以是create
serobj = UserSerializer(instance=old_data,data=new_data)
if serobj.is_valid(): # 验证数据
#执行数据库操作【自动调用的create或者update方法】,此处是update
serobj.save()
print(serobj.validated_data) # 可以拿到通过的数据
print(serobj.errors) # 可以拿到错误的信息
return Response(serobj.validated_data)
views.py
from rest_framework.viewsets import GenericViewSet
from rest_framework.response import Response
from rest_framework import status
from rest_framework.decorators import action
from .serializers import BookInfoSerializer
from .models import BookInfo
from Py_Redis import settings
class BookInfoList(GenericViewSet):
"""图书列表类视图"""
serializer_class=''
@action(detail=False,methods=['GET'])
def get(self, request):
books = BookInfo.objects.all()
serializer = BookInfoSerializer(instance=books, many=True)
return Response(data=serializer.data, status=status.HTTP_200_OK)
@action(detail=False,methods=['POST'])
def post(self, request):
r=request.data.get('file')
print(r)
BookInfo.objects.create(
btitle = '1',
bcontent = '1',
bread = '1',
bprice = '1',
is_delete = '1',
image = r
)
return Response({'code':200})
@action(detail=False,methods=['GET'])
def save_img(self,request):
print(1211)
return Response({'code':200})
from django.contrib import admin
from django.urls import path,include
from django.views.static import serve
from Py_Redis import settings
urlpatterns = [
path('admin/', admin.site.urls),
path('',include('myapp.urls')),
path('upload/<path>',serve,{'document_root':settings.UPLOAD_FILE})
]
myapp/urls.py
from django.urls import path, re_path
from rest_framework.routers import DefaultRouter
from . import views
router = DefaultRouter()
router.register('books',views.BookInfoList,basename="booklist")
urlpatterns = router.urls
main.js
// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App'
import router from './router'
import axios from 'axios'
Vue.prototype.axios=axios
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
Vue.config.productionTip = false
Vue.use(ElementUI);
/* eslint-disable no-new */
new Vue({
el: '#app',
router,
components: { App },
template: '<App/>'
})