[增删改查] Python 之使用 Django + LayUI 做后台管理
发布日期:2021-06-30 16:51:04
浏览次数:3
分类:技术文章
本文共 6128 字,大约阅读时间需要 20 分钟。
一、前言
Python 使用 Django 框架,进行 web 开发,一点都不比目前 JavaEE 最简便的框架 SpringBoot 差,甚至是更加便捷。 ① 使用
python manage.py makemigrations
、python manage.py migrate
,即可实现 JavaEE 方面的 JPA框架 的代码操作数据库的功能 ② 使用例如 python manage.py inspectdb > booktest/models.py
(booktest/models.py 为自己的模型代码位置),即可实现 类似 MyBatis 的逆向工程,通过数据库中建立的表自动生成相应的 model 代码 ③ 模型.objects
下已经实现了基本 CRUD 的方法,可以直接调用,类似 SpringBoot 中的 SpringData+JPA
的功能,且代码量极少。 ④ ….等等 本文代码改自前文:
只不过交互从 React 改为强大的Django模板引擎
下面来个案例,使用 Python 做小型项目须知
二、演示
2.0.首页
2.1.增加
2.2.修改
2.3.查询
2.4.删除
三、代码
2018.7.14 更新,代码已经放在 github 上:
M+V+T+url+settings3.1.M-studen/models.py
from django.db import modelsclass student_info(models.Model): # 字符 t_name=models.CharField(max_length=20,default='linhongcun') # 数字 t_age=models.IntegerField(default=21) # 使用数字长度设置无效 # 图片 t_image=models.CharField(max_length=300,default='http://itaem.oss-cn-shenzhen.aliyuncs.com/20180509083509.jpg?Expires=4679469344&OSSAccessKeyId=LTAIATBJKsu6vu4R&Signature=PJkwOp9DVhtYu3Xkka0MnZVfnP0%3D')
3.2.V-student/views.py
from django.shortcuts import render,redirectfrom django.views.decorators.csrf import csrf_exemptfrom django.conf import settings # 获取 settings.py 里边配置的信息import osfrom .models import *# 1.1.前往 index 页(all)def all_page(request): data = student_info.objects.all() content={ 'data': data} return render(request, 'student/all.html', content)# 1.2.前往 add 页def add_page( request ): return render(request, 'student/add.html')# 2.增@csrf_exemptdef add_student(request): t_name = request.POST['tName'] t_age = request.POST['tAge'] t_image = request.FILES['tImage'] fname = os.path.join(settings.MEDIA_ROOT, t_image.name) with open(fname, 'wb') as pic: for c in t_image.chunks(): pic.write(c) student=student_info() student.t_name=t_name student.t_age=t_age # 存访问路径到数据库 student.t_image = os.path.join("/static/media/", t_image.name) student.save() return redirect('/allPage')# 3.1.查 - namedef search_student(request): t_name = request.GET['q'] student=student_info.objects.filter(t_name=t_name) content={ 'data':student} return render(request,'student/all.html', content)# 3.2.查 - iddef search_student_id(request,student_id): student=student_info.objects.filter(id=student_id) content = { 'data': student} print(content) return render(request,'student/update.html',content)# 4.改@csrf_exemptdef update_student(request): id=request.POST['t_id'] t_name = request.POST['tName'] t_age = request.POST['tAge'] # 缺陷:文件必传 t_image = request.FILES['tImage'] fname = os.path.join(settings.MEDIA_ROOT, t_image.name) with open(fname, 'wb') as pic: for c in t_image.chunks(): pic.write(c) t_image = os.path.join("/static/media/", t_image.name) student_info.objects.filter(id=id).update(t_name=t_name,t_age=t_age,t_image=t_image) return redirect('/allPage')# 5.删def delete_student(request,student_id): student_info.objects.filter(id=student_id).delete() return redirect('/allPage')
3.3.T-templates/student
3.3.0.base.html 基页
DjangoCURD {# 注意引入文件的方式 #} {% load staticfiles %} {# 设置网页标题图标 #} {% block content %} {% endblock %}
3.3.1.all.html 首页
{% extends "student/base.html" %}{% block content %} {% endblock %}
3.3.2.add.html 增加页
{% extends "student/base.html" %}{% block content %}{% endblock %}Add Student
3.3.3.update.html 修改页
{% extends "student/base.html" %}{% block content %}{% endblock %}Update Student Page
{%for student in data%}{% endfor %}
4.url
from django.contrib import adminfrom django.urls import path# 注意要引入 urlfrom django.conf.urls import url# 注意要引入自己的 viewsfrom student import viewsurlpatterns = [ path('admin/', admin.site.urls), url(r'^allPage/$', views.all_page), # 前往所有学生的网页 url(r'^addPage/$', views.add_page), # 前往新增学生的网页 url(r'^addStudent/$', views.add_student), # 添加学生的 dao 操作 url(r'^search/$', views.search_student), # 根据 t_name 查找学生的 dao 操作 url(r'^get/(?P[0-9]*)/$', views.search_student_id), # 根据 id 查找学生的 dao 操作 url(r'^updateStudent/$', views.update_student), # 修改学生的 dao 操作 url(r'^delete/(?P [0-9]*)/$', views.delete_student), # 删除学生的 dao 操作]
四、其他
5.1.参考资料
《精通 Django》 Nigel George 著 5.2.其他 5.3.问题与解决
转载地址:https://larger5.blog.csdn.net/article/details/80905372 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
关注你微信了!
[***.104.42.241]2024年04月27日 04时47分54秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【NLP学习笔记】中文分词(Word Segmentation,WS)
2019-04-30
【NLP学习笔记】词性标注(Part-of-speech Tagging, POS)
2019-04-30
《知识图谱》阅读笔记(七)
2019-04-30
《知识图谱》阅读笔记(九)
2019-04-30
【超越白皮书7】你需要知道关于ETH2.0的几个事实
2019-04-30
超越白皮书8:穿云而过的闪电网络
2019-04-30
AMM做市无常损失对冲分析系列(一)—— 损益及期权对冲模型构建
2019-04-30
JS中document对象和window对象有什么区别
2019-04-30
【python练习题】遍历1
2019-04-30
【matlab】显示图片且下方显示文字
2019-04-30
关于greater<int>以及类模板的一些理解
2019-04-30
对于时间复杂度的通俗理解
2019-04-30
如何输入多组数据并输出每组数据的和?
2019-04-30
基于CentOS 7的Linux常用命令行命令
2019-04-30
行阶梯型矩阵
2019-04-30
信号量机制
2019-04-30
临界资源与临界区
2019-04-30
matlab中uint8,double,im2double和im2uint8的区别
2019-04-30
数字图像处理总复习
2019-04-30