[增删改查] Python 之使用 Django + LayUI 做后台管理
发布日期:2021-06-30 16:51:04 浏览次数:3 分类:技术文章

本文共 6128 字,大约阅读时间需要 20 分钟。

一、前言

这里写图片描述

Python 使用 Django 框架,进行 web 开发,一点都不比目前 JavaEE 最简便的框架 SpringBoot 差,甚至是更加便捷。
① 使用 python manage.py makemigrationspython 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+settings

3.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 %}    

CRUD——Django + LayUI

{# 查询学生模块 #}
{# 显示所有学生模块 #}
{%for student in data%}
{%endfor%}
id 姓名 年龄 图片 修改 删除
{
{student.id}}
{
{student.t_name}}
{
{student.t_age}}
{# 修改学生模块 #} 修改 {# 删除学生模块 #} 删除
{# 添加学生模块 #}
添加
{% endblock %}

3.3.2.add.html 增加页

{% extends "student/base.html" %}{% block content %}    

Add Student





{% endblock %}

3.3.3.update.html 修改页

{% extends "student/base.html" %}{% block content %}    

Update Student Page

{%for student in data%}





{% endfor %}
{% endblock %}

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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Docker 镜像容器 之 导出导入、上传镜像到 DockerHub 上、Nexus私库 的引入
下一篇:[汇编语言] 带有颜色的字符串显示(hello world 级别程序)

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年04月27日 04时47分54秒