• 图书管理曾删改差


    1.图书管理系统后端接口

    1.1books/models.py 中设置表

    from django.db import models
    
    class Books(models.Model):
        btitle = models.CharField(max_length=20)
        bpub_date = models.DateField()
        bread = models.IntegerField()
        bcomment = models.IntegerField()
        is_delete = models.BooleanField(default=False)
    books/models.py

    1.2urls.py中设置路由

    from django.urls import path
    from . import views
    urlpatterns = [
    
        path('book/', views.BooksView.as_view()),
    
    ]
    books/urls.py

    1.3 book/views.py视图函数

    from django.http import JsonResponse
    import json
    from rest_framework.views import View
    from .models import *
    
    
    class BooksView(View):
        def get(self, request):
            books = Books.objects.filter(is_delete=False)
            book_list = books.values('id', 'btitle', 'bpub_date', 'bread', 'bcomment')
            book_list = list(book_list)
            data = {
                "code":0,
                "msg":"success",
                "books":book_list
            }
            return JsonResponse(data)
    
        def post(self,request):
            body_json = request.body.decode()
            body_dict = json.loads(body_json)
            btitle = body_dict.get('btitle')
            bpub_date = body_dict.get('bpub_date')
            bread = body_dict.get('bread')
            bcomment = body_dict.get('bcomment')
            book = Books(btitle=btitle, bpub_date=bpub_date, bread=bread, bcomment=bcomment)
            book.save()
            return JsonResponse({"code": 0, "msg": "success"})
    
        def put(self, request):
            body_json = request.body.decode()
            body_dict = json.loads(body_json)
            id = body_dict.get('id')
            btitle = body_dict.get('btitle')
            bpub_date = body_dict.get('bpub_date')
            bread = body_dict.get('bread')
            bcomment = body_dict.get('bcomment')
            book = Books.objects.get(id=id)
            book.btitle = btitle
            book.bpub_date = bpub_date
            book.bread = bread
            book.bcomment = bcomment
            book.save()
            return JsonResponse({"code": 0, "msg": "success"})
    
        def delete(self, request):
            body_json = request.body.decode()
            body_dict = json.loads(body_json)
            id = body_dict.get('id')
            book = Books.objects.get(id=id)
            book.is_delete = True
            book.save()
            return JsonResponse({"code": 0, "msg": "success"})
    books/views.py

    查询

    http://127.0.0.1:8000/books/book/

    添加

    http://127.0.0.1:8000/books/book/

    {
               
                "btitle": "我真不是大魔王05",
                "bpub_date": "2018-02-04",
                "bread": 100,
                "bcomment": 0
     }

    修改

    http://127.0.0.1:8000/books/book/

    {
                "id": 1,
                "btitle": "红楼梦",
                "bpub_date": "2018-02-04",
                "bread": 100,
                "bcomment": 0
     }

     删除

    http://127.0.0.1:8000/books/book/

    {
                "id": 1,
                "btitle": "红楼梦",
                "bpub_date": "2018-02-04",
                "bread": 100,
                "bcomment": 0
            }

    2 图书管理前端页面

    1.1 http/apis.js添加后端请求路由

    import { get, post, put, del } from './index'
    
    
    // 用户登录 
    export const login = (params, headers) => post("/login/", params, headers)
    
    
    
    
    export const getBookList = (params, headers) => get("/books/book/", params, headers)
    export const addBook = (params, headers) => post("/books/book/", params, headers)
    export const       editBook = (params, headers) => put("/books/book/", params, headers) 
    export const delBook = (params, headers) => del("/books/book/", params, headers)
    http/apis.js

    1.2 router/index.js添加路由 

    import BookEdit from '@/components/BookEdit'
    import Books from '@/views/books/Books'
    
    {
          path:'/books',
          name:'Books',
          component:Books
        },
        {
          path:'/bookEdit',
          name:'BookEdit',
          component:BookEdit
        },
    src/router/index.js

    1.3 srcviewsooksBooks.vue父组件

    <template>
        <div>
            <h1>图书管理系统</h1>
            <div  style="margin:30px;">
                 <button @click="addNew">新增图书</button>
                <BookEdit
                    v-show="dialogVisible"
                    :visible.sync='dialogVisible'
                    :data='editData'
                    @save='save'
                >
                </BookEdit>
            </div>
            <div>
            <table style='margin: auto; border: solid 1px black;'>
                <tr>
                    <th>图书编号</th>
                    <th>图书名子</th>
                    <th>出版时间</th>
                    <th>阅读数</th>
                    <th>评论数</th>
                    <th>操作</th>
                </tr>
                <tr v-for="(book,index) in books" :key="book.id">
                    <td>{{book.id}}</td>
                    <td>{{book.btitle}}</td>
                    <td>{{book.bpub_date}}</td>
                    <td>{{book.bread}}</td>
                    <td>{{book.bcomment}}</td>
                    <td>
                        <button @click="edit(index)">修改</button>
                        <button @click="del(index)">删除</button>
                    </td>
                </tr>
            </table>
            </div>
    
            
        </div>
    </template>
    
    
    
    <script>
    import { getBookList, addBook, editBook, delBook } from '@/http/apis' 
    import BookEdit from '@/components/BookEdit' 
    
    export default {
        components:{
            BookEdit
        },
        data(){
            return{
                dialogVisible:false,
                books:[
                    { id: 3, btitle: "...", bpub_date: "2020-08-11", bread: 100, bcomment: 50 }
                ],
                editData:{ // 编辑的内容
                    btitle: "",
                    bpub_date: "",
                    bread: 0,
                    bcomment: 0
                }
            }
        },
        methods:{
            //1.点击新增图书时初始化数据
            addNew(){
                this.editData={  // 初始化 编辑内容
                    btitle: "",
                    bpub_date:'',
                    bread: 100,
                    bcomment: 0
                }
                this.dialogVisible=true  //显示弹框
            },
            //2.获取图书列表
            get(){
                getBookList().then((data) => {
                    // console.log(data)
                    // books: [{btitle: "西游记", bpub_date: "2020-08-11", bread: 100, bcomment: 50}]
                    this.books = data.books
                })
            },
    
            //3 修改或者添加图书
            save(){
                // 根据editData中的id判断是更新还是新增
                // debugger
                console.log(this.editData)
                if (this.editData.id) {
                    // 如果有id, 修改图书
                    //修改请求
                    let params = this.editData
                    editBook(params).then((res)=>{
                        console.log(res)
                        this.get()
                    })
                } else {
                    //增加图书
                    addBook(this.editData).then((res) => {
                        this.get()
                    })}
                },
                //点击修改弹出修改页面
                edit(index){
                    this.editData=JSON.parse(JSON.stringify(this.books[index]))  // 复制this.books[index] 的数据
                    // this.editData = this.books[index]  //
                    this.dialogVisible = true
                },
    
    
                //删除
                del(index){
                    let params={
                        id: this.books[index].id
                    }
                    delBook(params).then((res)=>{
                        console.log(res)
                        this.get()
                    })}
    
                },
                created(){
                    this.get()
                }
     }
    </script>
    
    <style scoped>
    table tr td{
         150px;
        border:solid 1px black;
    }
    </style>
    srcviewsooksBooks.vue

    1.4 srccomponentsBookEdit.vue子组件

    <template>
        <div>
            <el-dialog 
            title="新增图书"
            :visible="visible"
            >
            <div>
                <span>图书名称:</span>
                <el-input 
                class="elinput"
                v-model="data.btitle"
                ></el-input>
            </div>
            <div>
                <span>发布日期:</span>
                <el-input 
                class='elinput'
                v-model="data.bpub_date"
                ></el-input>
            </div>
    
    
            <div>
                <span>阅读量:</span>
                <el-input
                class='elinput'
                v-model="data.bread"
                ></el-input>
            </div>
            <div>
                <span>评论量:</span>
                <el-input 
                class="elinput"
                v-model="data.bcomment"
                ></el-input>
            </div>
    
            <el-button @click="cancel">取消</el-button>
            <el-button 
            type="primary"
            @click="addBook"
            >确定
            </el-button>
    
    
            </el-dialog>
    
    
        </div>
    </template>
    
    
    <script>
    // import { addbook } from '@/http/apis'
    export default {
        props: ['data', 'visible'],
        data(){
            return{
    
            }
        },
        methods:{
            addBook(){
                this.$emit('update:visible', false)
                this.$emit('save')
    
            },
            cancel(){
                this.$emit('update:visible', false)
            }
        },
        mounted(){
    
        }
    
    
    
    }
    </script>
    
    
    <style scoped>
    .eliput{
         220px;
        height: 40px;
    }
    </style>
    srccomponentsBookEdit.vuue

    1.5 src/mian.js引入ElementUl

    // 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'
    
    Vue.config.productionTip = false
    
    // 使用 elementui
    // npm i element-ui -S 安装到当前项目
    import ElementUI from 'element-ui'
    import 'element-ui/lib/theme-chalk/index.css'
    Vue.use(ElementUI)
    
    
    
    
    /* eslint-disable no-new */
    new Vue({
      el: '#app',
      router,
      components: { App },
      template: '<App/>'
    })
    srcmain.js
  • 相关阅读:
    Matlab中的随机数生成器
    Matlab中的随机数生成器
    Matlab 函数返回矩阵
    Matlab 函数返回矩阵
    Matlab 函数返回矩阵
    矩阵同列同行复制原理
    矩阵同列同行复制原理
    Apache/RewriteRule
    使用google map v3添加经纬度信息
    评论:一站式学习C编程(升级版) (平装)
  • 原文地址:https://www.cnblogs.com/xiaoxiamiaichiyu/p/13900200.html
Copyright © 2020-2023  润新知