Vue前端

注册页面

点击查看代码
<template>
<div class="register">
<el-row :gutter="20">
<el-col :span="12" :offset="6">
<div class="grid-content bg-purple">
<h1>注册页面</h1>
<el-form status-icon ref="ruleForm" label-width="100px"
class="demo-ruleForm">
<el-form-item label="用户名" prop="username">
<el-input v-model.number="username"></el-input>
</el-form-item>
<el-form-item label="密码" prop="pass">
<el-input type="password" v-model="pass" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="确认密码" prop="checkPass">
<el-input type="password" v-model="checkPass" autocomplete="off"></el-input>
</el-form-item> <el-form-item>
<el-button type="primary" @click="submitForm">提交</el-button>
</el-form-item>
</el-form>
</div>
</el-col>
</el-row>
</div>
</template> <script>
import axios from "axios"; export default {
data() {
return {
username:'',
pass:'',
checkPass:'',
};
},
methods: {
submitForm() {
axios.post('http://127.0.0.1:8000/register/', {
username: this.username,
pass:this.pass,
checkPass:this.checkPass
})
.then(function (res) {
if (res.data.code===100){
location.href = 'http://localhost:8080/login'
}else {
alert(res.data.msg)
}
})
},
}
}
</script>

登录

点击查看代码
<template>
<div class="login">
<el-row :gutter="20">
<el-col :span="12" :offset="6">
<div class="grid-content bg-purple">
<h1>登录页面</h1>
<el-form status-icon ref="ruleForm" label-width="100px"
class="demo-ruleForm">
<el-form-item label="用户名" prop="username">
<el-input v-model.number="username"></el-input>
</el-form-item>
<el-form-item label="密码" prop="pass">
<el-input type="password" v-model="pass" autocomplete="off"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submitForm">提交</el-button>
</el-form-item>
</el-form>
</div>
</el-col>
</el-row>
</div>
</template> <script>
import axios from "axios"; export default {
data() {
return {
username:'',
pass:'',
};
},
methods: {
submitForm() {
axios.post('http://127.0.0.1:8000/login/', {
username: this.username,
pass:this.pass,
})
.then(function (res) {
if (res.data.code===100){
location.href = 'http://localhost:8080/'
}else {
alert(res.data.msg)
}
})
},
}
}
</script>

查看所有图书

点击查看代码
<template>
<div class="name">
<h1>图书管理</h1>
<el-row :gutter="20">
<el-col :span="12" :offset="6">
<div class="grid-content bg-purple">
<el-button type="success" @click="handleCreate">增加图书</el-button>
<el-table
:data="tableData"
style="width: 100%">
<el-table-column
prop="id"
label="图书id"
width="180">
</el-table-column>
<el-table-column
prop="name"
label="图书名称"
width="180">
</el-table-column>
<el-table-column
prop="price"
label="价格">
</el-table-column>
<el-table-column
prop="operate"
label="操作">
<template slot-scope="scope">
<el-button
size="mini"
type="primary"
@click="handleEdit(scope.$index, scope.row)">修改
</el-button>
<el-button
size="mini"
type="danger"
@click="handleDelete(scope.$index, scope.row)">删除
</el-button>
</template>
</el-table-column>
</el-table>
</div>
</el-col>
</el-row>
</div>
</template> <script>
import axios from "axios"; export default {
name: 'HomeView',
data() {
return {
// tableData: [{
// id:'',
// name:'',
// price:''
// }],
tableData:[]
}
},
created() {
axios.get('http://127.0.0.1:8000/book').then(res => {
this.tableData = res.data
// console.log(res.data)
// res.data.forEach((value, index) => {
// this.tableData.id = index
// this.tableData.name = value.name
// this.tableData.price = value.price
// console.log(this.tableData)
// })
})
},
methods: {
handleCreate() {
this.$router.push('/create')
},
handleEdit(index, row) {
// console.log(index, row);
// console.log(row.name)
// console.log(row.price)
this.$router.push({name: 'update', params: {id: row.id, bookName: row.name, bookPrice: row.price}})
},
handleDelete(index, row) {
console.log(index, row);
console.log(row.id)
axios.delete('http://127.0.0.1:8000/book/' + row.id).then(res => {
this.$message({
message: '删除成功',
type: 'success',
duration: 1000, // 设置为 1 秒钟
onClose: () => {
setTimeout(() => {
location.reload()
})
}
});
})
}
}
}
</script>

新增图书

点击查看代码
<template>
<div class="create">
<el-row :gutter="20">
<el-col :span="12" :offset="6">
<div class="grid-content bg-purple" style="margin-top: 40px">
<h1>添加图书</h1>
<el-row :gutter="20">
<el-col :span="14" :offset="5">
<el-input v-model="name" placeholder="图书名字"></el-input>
<el-input v-model="price" placeholder="图书价格" style="margin-top: 20px"></el-input>
<el-button type="success" @click="handleSend" style="float: right;margin-top: 20px">确认添加</el-button>
</el-col>
</el-row>
</div>
</el-col>
</el-row>
</div>
</template> <script>
import axios from "axios"; export default {
name: "BookCreateView",
data() {
return {
name: '',
price: ''
}
},
methods: {
handleSend() {
axios.post('http://127.0.0.1:8000/book/', {
name: this.name,
price: this.price,
}).then(res => {
this.$message({
message: '添加成功',
type: 'success',
duration: 1000, // 设置为 1 秒钟
onClose: () => {
setTimeout(() => {
this.$router.push('/')
})
}
});
}).catch(error => {
console.log(error); // 输出错误信息
});
}
}
}
</script>

修改图书

点击查看代码
<template>
<div class="update">
<el-row :gutter="20">
<el-col :span="12" :offset="6">
<div class="grid-content bg-purple" style="margin-top: 40px">
<h1>修改图书</h1>
<el-row :gutter="20">
<el-col :span="14" :offset="5">
<el-input v-model="name" :placeholder="bookName"></el-input>
<el-input v-model="price" :placeholder="bookPrice" style="margin-top: 20px"></el-input>
<el-button type="success" @click="handleSend(bookId)" style="float: right;margin-top: 20px">确认修改
</el-button>
</el-col>
</el-row>
</div>
</el-col>
</el-row>
</div>
</template> <script>
import axios from "axios"; export default {
name: "BookUpdateView",
data() {
return {
name: '',
price: '',
bookId: '',
bookName: '',
bookPrice: ''
}
},
created() {
// console.log(this.$route.params.id)
// console.log(this.$route.params.bookName)
// console.log(this.$route.params.bookPrice)
this.bookId = this.$route.params.id
this.bookName = this.$route.params.bookName
this.bookPrice = this.$route.params.bookPrice
},
methods: {
handleSend(bookId) {
axios.put('http://127.0.0.1:8000/book/' + bookId + '/', {
name: this.name,
price: this.price,
}).then(response => {
console.log(response.data); // 输出成功修改的图书信息
this.$message({
message: '修改成功',
type: 'success',
duration: 1000, // 设置为 1 秒钟
onClose: () => {
setTimeout(() => {
this.$router.push('/')
})
}
});
}).catch(error => {
console.log(error); // 输出错误信息
alert('不能为空')
});
}
}
}
</script>

Django后端

注册

from rest_framework.views import APIView
from django.contrib import auth
from django.contrib.auth.models import User class RegisterView(APIView):
def post(self, request):
back_dic = {'code': 100, 'msg': '注册成功'}
res = json.loads(request.body)
username = res.get('username')
password = res.get('pass')
repassword = res.get('checkPass')
user_obj = User.objects.filter(username=username)
if user_obj:
back_dic['code'] = 101
back_dic['msg'] = '用户名已存在'
return Response(back_dic)
if password != repassword:
back_dic['code'] = 101
back_dic['msg'] = '两次密码不一致'
return Response(back_dic)
if not username:
back_dic['code'] = 101
back_dic['msg'] = '用户名不能为空'
return Response(back_dic) User.objects.create_user(username=username, password=password)
return Response(back_dic)

登录

from rest_framework.views import APIView
from django.contrib import auth
from django.contrib.auth.models import User class LoginView(APIView):
def post(self, request):
back_dic = {'code': 100, 'msg': '注册成功'}
res = json.loads(request.body)
username = res.get('username')
password = res.get('pass')
user_obj = auth.authenticate(request, username=username, password=password)
if user_obj:
return Response(back_dic)
else:
back_dic['code'] = 101
back_dic['msg'] = '用户名或密码错误'
return Response(back_dic)

图书接口(增删改查)

from rest_framework.viewsets import ModelViewSet
from .models import Books
from .serializer import BookSerializer class BookDetailView(ModelViewSet):
queryset = Books.objects.all()
serializer_class = BookSerializer

Vue_Django 登录注册+图书管理系统的更多相关文章

  1. struts2+hibernate 项目实战:图书管理系统

    经典项目,练手必备. 图书管理系统 需求分析(大致,并不专业):1.需要有用户管理: 1.1 用户注册: 1.2 用户登录: 1.3 用户信息修改: 1.4 用户修改密码: 2.需要有书本管理: 2. ...

  2. Java图书管理系统(用Java常用集合实现)

    图书管理系统 一.需求说明 1.功能:登录,注册,忘记密码,管理员管理,图书管理. 2.管理员管理:管理员的增删改查. 3.图书管理:图书的增删改查. 4.管理员属性包括:id,姓名,性别,年龄,家庭 ...

  3. 图书管理系统(无中间件,用装饰器的)-----未基于FORM组件

    目的:实现图书的增删改查 models.py from django.db import models # Create your models here. class Book(models.Mod ...

  4. python 全栈开发,Day77(图书管理系统)

    一.图书管理系统 完整代码链接: https://github.com/py3study/bms_multi 本项目使用session来实现一个简单的图书管理系统 未登录不允许访问后台: 直接访问后台 ...

  5. 基于Java SE集合的图书管理系统

    图书管理系统一.需求说明1.功能:登录,注册,忘记密码,管理员管理,图书管理.2.管理员管理:管理员的增删改查.3.图书管理:图书的增删改查.4.管理员属性包括:id,姓名,性别,年龄,家庭住址,手机 ...

  6. 11 基于django的图书管理系统 多表

    1.需求 作业需求:1.列出图书列表.出版社列表.作者列表2.点击作者,会列出其出版的图书列表3.点击出版社,会列出旗下图书列表4.可以创建.修改.删除 图书.作者.出版社 踩分点:1.满足需求1,2 ...

  7. python大作业-图书管理系统

    #缺少循环执行和错误处理 #add()函数 添加了循环执行 #错误处理:regist()函数 登录和退出选择的时候添加了错误处理 import sys import importlib importl ...

  8. 基于servlet的图书管理系统

    该项目是Java语言开发的图书管理系统,IDE采用eclipse,技术采用servlet,数据库使用mysql,前端页面采用bootstrap框架,简介美观. 系统具备基础的功能,读者可以注册登录,登 ...

  9. Django实现简单的图书管理系统

    目录 Django写图书管理系统 功能截图 创建Django项目 开始项目 配置文件 建立路由关系 开始写Django项目 编写核心逻辑函数 写前端页面 add_author.html add_boo ...

  10. python实现图书管理系统

    # 用户注册 def logon(): print("欢迎来到图书管理系统注册页面~") username = input("请输入用户名:") if len( ...

随机推荐

  1. QGIS 导入文本数据(WKT)

    在做GIS数据处理的时候,经常会遇到原始数据是 text.csv.Excel 等格式的数据.要使用数据前提是要先转换数据. 这里是介绍用 QGIS 导入数据.打开导入方式如下(根据自己的文本类型选择不 ...

  2. 【超详细】Ubuntu 20.04 安装 Apache+PHP网页环境 图文教程,常见问题和解决方案

    本文将介绍在Ubuntu20.04 LTS环境下安装Apache的全过程,针对其中可能出现的一些坑也会提供解决方案. 作者:Eriktse 简介:19岁,211计算机在读,现役ACM银牌选手力争以通俗 ...

  3. Hugging Face 社区中蓬勃发展的计算机视觉

    在 Hugging Face 上,我们为与社区一起推动人工智能领域的民主化而感到自豪.作为这个使命的一部分,我们从去年开始专注于计算机视觉.开始只是 Transformers 中 Vision Tra ...

  4. Oracle宕机之PMON (ospid: 248987): terminating the instance due to error 484(另附hugepage配置方法)

    数据库版本:11.2.0.4 RAC环境 操作系统版本:Asianux Server release 7.3 数据库报错分析 接到业务消息,应用无法访问,开发人员查看日志后发现无法连接数据库. 查看数 ...

  5. 使用frp进行内网穿透

    frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP.UDP.HTTP.HTTPS 等多种协议.可以将内网服务以安全.便捷的方式通过具有公网 IP 节点的中转暴露到公网. frp is a ...

  6. pysimplegui之进度表one_line_progress_meter

    我们的代码中都有循环.'等待,看着文本窗口中滚动过去的计数器不是很快乐吗?一行代码如何获得一个进度表,其中包含有关您的代码的统计信息? one_line_progress_meter(title, c ...

  7. Windows服务器重启注意事项

    windows作为服务器有它的优势,但是相比于基于linux作为服务器来说,它不够稳定,这里的windows服务器作为服务器有各种版本,windows2012,2008,甚至还有2003,XP的系统, ...

  8. YII2.0框架分页

    这篇文章主要介绍了Yii分页用法,以实例形式详细分析了比较常见的几种分页方法及其应用特点,非常具有实用价值,需要的朋友可以参考下: 在这里我主要联查的 book 表和 book_press 两张表进行 ...

  9. 【LeetCode动态规划#07】01背包问题一维写法(状态压缩)实战,其二(目标和、零一和)

    目标和(放满背包的方法有几种) 力扣题目链接(opens new window) 难度:中等 给定一个非负整数数组,a1, a2, ..., an, 和一个目标数,S.现在你有两个符号 + 和 -.对 ...

  10. Kurator v0.3.0版本发布

    摘要:2023年4月8日,Kurator正式发布v0.3.0版本. 本文分享自华为云社区<华为云 Kurator v0.3.0 版本发布!集群舰队助力分布式云统一管理>,作者:云容器大未来 ...