django基础5--CRUD操作

一.CRUD操作
crud指增删改查
1.增加
from app01 import models
# 获取数据
def add_person(request):
if request.method == ‘POST’:
name = request.POST.get(‘name’)
age = request.POST.get(‘age’)
height = request.POST.get(‘height’)
weight = request.POST.get(‘weight’)
birthday = request.POST.get(‘birthday’)
# 导入数据
person = models.Person()
person.name = name
person.age = age
person.height = height
person.weight = weight
person.birthday = birthday
person.save()
# 方法二:使用create方法
person = models.Person.objects.create(
name = name
age = age
height = height
weight = weight
birthday = birthday

			)
			return redirect('/app01/show_person/')
		return render(request,'app01/add_person.html')

2.展示
	def show_person(request):
		person_obj_lst = models.Person.objects.all()
		return render(request,'app01/show_person.html',{'person_obj_lst':person_obj_lst})
		
3.删除
	def del_person(request):
		ids = request.GET.get('id')
		models.Person.objects.get(id = ids).delete()
		return redirect('/app01/show_person/')

4.修改
	def update_person(request):
		if request.method == 'GET':
			ids = request.GET.get('id') # 此id为show_person页面的id
			person_obj = models.Person.object.get(id = ids)
			return render(request , 'app01/update_person.html',{'person_obj':person_obj})
		else:
			ids = request.POST.get('id') # 获取update_person页面隐藏域里的id
			name = request.POST.get('username')
			age = request.POST.get('age')
			height = request.POST.get('height')
			weight = request.POST.get('weight')
			birthday = request.POST.get('birthday')
			# 导入数据库
			person = models.Person.objects.get(id=ids)
			person.name = name
			person.age = age
			person.height = height
			person.weight = weight
			person.birthday = birthday
			person.save()
			return redirect('/app01/show_person/')

二.admin 使用
1.python manage.py createsuperuser
2.注册 model 类
admin.py :
from django.contrib import admin
from app01.models import Person
admin.site.register(Person)
3. 修改成中文
LANGUAGE_CODE = ‘zh-hans’

三.常用方法
1.all()查询所有结果
2.filter(**kwargs) 包含筛选条件相匹配的对象
3.get(**kwargs) 只返回一个结果
ret = models.Person.objects.get(age=11)
4.first()返回第一条记录
5.last()返回最后一条记录
6.exclude() 返回与筛选条件不匹配的对象
7.order_by()对查询结果排序,默认升序
加’-'降序
8.reverse() 对查询结果反向排序
9.values() 返回一个字典
10.values_list() 返回的是元组
11.count() 计数
12.exists() 如果包含数据返回True 否则返回False

四.切片数据
Person.objects.order_by(‘name’)[0:2]

五.双下划线方法
age__lt 小于
age__lte 小于等于
age__gt 大于
age__gte 大于等于
age__in 包含
name__contains=‘s’ 名字中含有s的
age__range=[10,20] 范围查找
xx__startwith = ‘x’ 以x开头
xx__endwith = ‘x’ 以x结尾
birthday__year = 2019 以时间为筛选条件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是drf+vue3+element-plus搭建CRUD的案例: 1. 创建Django项目,命名为backend,创建Django APP,命名为api。 2. 在api中创建models.py文件,定义模型: ``` from django.db import models class Book(models.Model): title = models.CharField(max_length=100) author = models.CharField(max_length=100) price = models.DecimalField(max_digits=10, decimal_places=2) created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) def __str__(self): return self.title ``` 3. 在api中创建serializers.py文件,定义序列化器: ``` from rest_framework import serializers from .models import Book class BookSerializer(serializers.ModelSerializer): class Meta: model = Book fields = '__all__' ``` 4. 在api中创建views.py文件,定义视图: ``` from rest_framework import viewsets from .models import Book from .serializers import BookSerializer class BookViewSet(viewsets.ModelViewSet): queryset = Book.objects.all() serializer_class = BookSerializer ``` 5. 在backend中配置api的url: ``` from django.urls import path, include from rest_framework import routers from api.views import BookViewSet router = routers.DefaultRouter() router.register(r'books', BookViewSet) urlpatterns = [ path('api/', include(router.urls)), ] ``` 6. 在frontend中创建vue3项目,命名为frontend,安装element-ui和axios: ``` yarn add element-plus axios ``` 7. 在frontend中创建src/api/index.js文件,定义请求: ``` import axios from 'axios' const instance = axios.create({ baseURL: 'http://localhost:8000/api/', timeout: 1000, headers: {'Content-Type': 'application/json'} }) export default { getBooks() { return instance.get('books/') }, createBook(data) { return instance.post('books/', data) }, updateBook(id, data) { return instance.put(`books/${id}/`, data) }, deleteBook(id) { return instance.delete(`books/${id}/`) } } ``` 8. 在frontend中创建src/views/BookList.vue文件,定义书籍列表组件: ``` <template> <el-table :data="books" style="width: 100%"> <el-table-column prop="title" label="书名"></el-table-column> <el-table-column prop="author" label="作者"></el-table-column> <el-table-column prop="price" label="价格"></el-table-column> <el-table-column label="操作"> <template #default="{row}"> <el-button type="primary" size="small" @click="handleEdit(row)">编辑</el-button> <el-button type="danger" size="small" @click="handleDelete(row)">删除</el-button> </template> </el-table-column> </el-table> </template> <script> import api from '@/api' export default { name: 'BookList', data() { return { books: [] } }, async created() { const res = await api.getBooks() this.books = res.data }, methods: { handleEdit(row) { this.$router.push({name: 'BookEdit', params: {id: row.id}}) }, async handleDelete(row) { try { await api.deleteBook(row.id) this.books = this.books.filter(book => book.id !== row.id) this.$message.success('删除成功') } catch (error) { this.$message.error('删除失败') } } } } </script> ``` 9. 在frontend中创建src/views/BookCreate.vue文件,定义创建书籍组件: ``` <template> <el-form :model="form" :rules="rules" ref="form" label-width="80px"> <el-form-item label="书名" prop="title"> <el-input v-model="form.title"></el-input> </el-form-item> <el-form-item label="作者" prop="author"> <el-input v-model="form.author"></el-input> </el-form-item> <el-form-item label="价格" prop="price"> <el-input v-model="form.price"></el-input> </el-form-item> <el-form-item> <el-button type="primary" @click="handleSubmit">创建</el-button> </el-form-item> </el-form> </template> <script> import api from '@/api' export default { name: 'BookCreate', data() { return { form: { title: '', author: '', price: '' }, rules: { title: [ {required: true, message: '请输入书名', trigger: 'blur'} ], author: [ {required: true, message: '请输入作者', trigger: 'blur'} ], price: [ {required: true, message: '请输入价格', trigger: 'blur'}, {type: 'number', message: '价格必须为数字', trigger: 'blur'} ] } } }, methods: { async handleSubmit() { try { await this.$refs.form.validate() await api.createBook(this.form) this.$message.success('创建成功') this.$router.push({name: 'BookList'}) } catch (error) { this.$message.error('创建失败') } } } } </script> ``` 10. 在frontend中创建src/views/BookEdit.vue文件,定义编辑书籍组件: ``` <template> <el-form :model="form" :rules="rules" ref="form" label-width="80px"> <el-form-item label="书名" prop="title"> <el-input v-model="form.title"></el-input> </el-form-item> <el-form-item label="作者" prop="author"> <el-input v-model="form.author"></el-input> </el-form-item> <el-form-item label="价格" prop="price"> <el-input v-model="form.price"></el-input> </el-form-item> <el-form-item> <el-button type="primary" @click="handleSubmit">保存</el-button> </el-form-item> </el-form> </template> <script> import api from '@/api' export default { name: 'BookEdit', data() { return { id: this.$route.params.id, form: { title: '', author: '', price: '' }, rules: { title: [ {required: true, message: '请输入书名', trigger: 'blur'} ], author: [ {required: true, message: '请输入作者', trigger: 'blur'} ], price: [ {required: true, message: '请输入价格', trigger: 'blur'}, {type: 'number', message: '价格必须为数字', trigger: 'blur'} ] } } }, async created() { const res = await api.getBooks() const book = res.data.find(book => book.id == this.id) this.form = book }, methods: { async handleSubmit() { try { await this.$refs.form.validate() await api.updateBook(this.id, this.form) this.$message.success('保存成功') this.$router.push({name: 'BookList'}) } catch (error) { this.$message.error('保存失败') } } } } </script> ``` 11. 在frontend中创建src/router/index.js文件,定义路由: ``` import {createRouter, createWebHistory} from 'vue-router' import BookList from '@/views/BookList.vue' import BookCreate from '@/views/BookCreate.vue' import BookEdit from '@/views/BookEdit.vue' const routes = [ {path: '/', name: 'BookList', component: BookList}, {path: '/create', name: 'BookCreate', component: BookCreate}, {path: '/edit/:id', name: 'BookEdit', component: BookEdit}, ] const router = createRouter({ history: createWebHistory(), routes }) export default router ``` 12. 在frontend中创建src/main.js文件,初始化vue3和element-plus: ``` import {createApp} from 'vue' import App from './App.vue' import router from './router' import ElementPlus from 'element-plus' import 'element-plus/lib/theme-chalk/index.css' createApp(App).use(router).use(ElementPlus).mount('#app') ``` 至此,我们成功地实现了一个简单的CRUD功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值