广告区

广告区


本站消息

站长简介/公众号

关注本站官方公众号:程序员总部,领取三大福利!
福利一:python和前端辅导
福利二:进程序员交流微信群,专属于程序员的圈子
福利三:领取全套零基础视频教程(python,java,前端,php)

  价值13000svip视频教程,python大神匠心打造,零基础python开发工程师视频教程全套,基础+进阶+项目实战,包含课件和源码

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2021-07(1)

2021-08(7)

Django实训项目——图书管理系统

发布于2022-06-21 00:05     阅读(483)     评论(0)     点赞(10)     收藏(5)



目录

一、创建一个Django项目--------Library

二、完成基本配置

1、配置数据库信息

2、进行数据迁移

3、路由配置

三、创建应用——index

1、创建index应用

2、注册index应用

3、创建图书模型和用户信息类——Books——User

 4、创建视图函数

 5、做数据迁移,生成图书和用户表

 四、创建html页面

页面需求:

1、在index应用下创建一个templates目录,再在templates目录下创建一个index目录,用来存放html文件

 2、编辑登录页面——login.html

 3、编辑图书显示及删除页面——books.html

4、编辑页面——dit.html

五、启动项目

1、启动项目

2、试一试登录能否成功,登录成功就会出现以下页面

 3、测试以下删除和编辑功能

总结:


一、创建一个Django项目--------Library

二、完成基本配置

1、配置数据库信息

在配置文件settings.py里配置数据库信息(注意密码要换成自己数据库的密码)

2、进行数据迁移

(1)创建数据库-----Lirbrary

(2)设置数据库连接模块

在项目的初始化文件里设置数据库连接模块

(3)执行数据迁移命令

在控制台依次执行两条数据迁移命令,生成数据表

python manage.py makemigrations

python manage.py migrate

 查看生成的数据表

3、路由配置

(1)主路由配置

配置主路由 - Library里的urls.py

 

三、创建应用——index

1、创建index应用

在控制台执行python manage.py startapp index 

2、注册index应用

在配置文件settings.py里注册index应用

3、创建图书模型和用户信息类——Books——User

在index的models.py里创建图书模型和用户信息模型类

  1. from django.db import models
  2. #创建图书模型
  3. class Books(models.Model):
  4. id=models.AutoField('编号',primary_key=True)
  5. number=models.CharField('总编号',max_length=10)
  6. category=models.CharField('分类号',max_length=10)
  7. name=models.CharField('书名',max_length=50)
  8. author=models.CharField('作者',max_length=10)
  9. press=models.CharField('出版单位',max_length=50)
  10. price=models.DecimalField('单价',decimal_places=2,max_digits=6)
  11. def __str__(self):
  12. return str(self.name)
  13. #用户信息类
  14. class User(models.Model):
  15. id = models.AutoField('编号',primary_key=True)
  16. username=models.CharField('用户名',max_length=20)
  17. password=models.CharField('密码',max_length=50)
  18. last_Login_Time=models.DateTimeField('上次登录时间')
  19. def __str__(self):
  20. return str(self.username)

 4、创建视图函数

在index的views.py里创建

  1. from django import db
  2. from django.http import HttpResponse
  3. from django.shortcuts import render, redirect
  4. from itsdangerous import json
  5. from index.models import User,Books
  6. #创建登录视图函数
  7. def loginView(request):
  8. return render(request, '../templates/index/login.html')
  9. #创建处理登录请求的视图函数
  10. def do_loginView(request):
  11. #判断请求方式
  12. if request.method =='POST':
  13. #获取登录表单提交的数据
  14. username=request.POST.get('username')
  15. password=request.POST.get('password')
  16. #利用用户模型查询
  17. users = User.objects.raw('select * from index_user where username= %s and password=%s',params=[username,password])
  18. #判断用户是否登录成功
  19. if len(users)>0:
  20. books=Books.objects.all()
  21. return render(request, '../templates/index/books.html', locals())
  22. else:
  23. login_msg=['用户名或密码错误']
  24. return render(request, '../templates/index/login.html', {'data':json.dumps(login_msg)})
  25. #创建显示图书视图函数
  26. def booksView(request):
  27. books =Books.objects.all()
  28. return render(request, '../templates/index/books.html', locals())
  29. #删除图书视图函数
  30. def del_publisher(request):
  31. id=request.GET.get('id')
  32. Books.objects.filter(id=id).delete()
  33. books = Books.objects.all()
  34. return render(request, '../templates/index/books.html', locals())
  35. #编辑图书视图
  36. def ditbooks(request):
  37. id = request.GET.get('id')
  38. obj_list=Books.objects.filter(id=id)
  39. if not obj_list:
  40. return HttpResponse('要编辑的数据不存在')
  41. obj=obj_list[0]
  42. if request.method=='POST':
  43. books_id=request.POST.get('books_id')
  44. books_number = request.POST.get('books_number')
  45. books_category = request.POST.get('books_category')
  46. books_name = request.POST.get('books_name')
  47. books_author = request.POST.get('books_author')
  48. books_press = request.POST.get('books_press')
  49. books_price = request.POST.get('books_price')
  50. obj.id=books_id
  51. obj.number=books_number
  52. obj.category=books_category
  53. obj.name=books_name
  54. obj.author=books_author
  55. obj.press=books_press
  56. obj.price=books_price
  57. obj.save()
  58. books = Books.objects.all()
  59. return render(request,'../templates/index/books.html', locals())
  60. return render(request,'../templates/index/dit.html', {'obj':obj})

 在主路由文件里导入上述视图函数

 5、做数据迁移,生成图书和用户表

在控制台依次执行两条命令

python manage.py makemigrations

python manage.py migrate index 0001_initial

查看生成的表

 四、创建html页面

页面需求:

登录页面——login.html

图书显示及删除页面——books.html

编辑页面——dit.html

1、在index应用下创建一个templates目录,再在templates目录下创建一个index目录,用来存放html文件

 2、编辑登录页面——login.html

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>用户登录</title>
  6. </head>
  7. <body>
  8. <h3 style="text-align: center">用户登录</h3>
  9. <form id="frmLogin" action="do_login" method="post">
  10. {% csrf_token %}
  11. <table class="tb" border="1" cellpadding="10" style="margin: 0px auto">
  12. <tr>
  13. <td align="center">账号</td>
  14. <td><input id="username" type="text" name="username"/></td>
  15. </tr>
  16. <tr>
  17. <td align="center">密码</td>
  18. <td><input id="password" type="password" name="password"/></td>
  19. </tr>
  20. <tr align="center">
  21. <td colspan="2">
  22. <input type="submit" value="登录"/>
  23. <input type="reset" value="重置"/>
  24. </td>
  25. </tr>
  26. </table>
  27. <script language="JavaScript">
  28. login_msg={{ data | safe }};
  29. if (login_msg !=null){
  30. alert(login_msg);
  31. }
  32. </script>
  33. </form>
  34. </body>
  35. </html>

 3、编辑图书显示及删除页面——books.html

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>图书管理系统</title>
  6. </head>
  7. <body>
  8. <h3 align="center">图书信息</h3>
  9. <table border="1" cellpadding="7" align="center">
  10. <tr>
  11. <th>编号</th>
  12. <th>总编号</th>
  13. <th>分类号</th>
  14. <th>书名</th>
  15. <th>作者</th>
  16. <th>出版单位</th>
  17. <th>单价</th>
  18. <th>操作</th>
  19. </tr>
  20. {% for book in books %}
  21. <tr>
  22. <td width="50" align="center">{{ book.id }}</td>
  23. <td width="100" align="center">{{ book.number }}</td>
  24. <td width="100" align="center">{{ book.category }}</td>
  25. <td width="100" align="center">{{ book.name }}</td>
  26. <td width="100" align="center">{{ book.author }}</td>
  27. <td width="130" align="center">{{ book.press }}</td>
  28. <td width="100" align="center">{{ book.price }}</td>
  29. <td width="200" align="center"><a href="/delete/?id={{ book.id }}" target="_blank">删除</a>
  30. <a href="/dit/?id={{ book.id }}" target="_blank">编辑</a>
  31. </td>
  32. </tr>
  33. {% endfor %}
  34. </table>
  35. </body>
  36. </html>

4、编辑页面——dit.html

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>编辑</title>
  6. </head>
  7. <body>
  8. <form action="" method="post">
  9. {% csrf_token %}
  10. <p>编号:<input type="text" name="books_id" value="{{ obj.id}}"></p>
  11. <p>总编号:<input type="text" name="books_number" value="{{ obj.number }}"></p>
  12. <p>分类号:<input type="text" name="books_category" value="{{ obj.category }}"></p>
  13. <p>书名:<input type="text" name="books_name" value="{{ obj.name }}"></p>
  14. <p>作者:<input type="text" name="books_author" value="{{ obj.author }}"></p>
  15. <p>出版单位:<input type="text" name="books_press" value="{{ obj.press }}"></p>
  16. <p>单价:<input type="text" name="books_price" value="{{ obj.price }}"></p>
  17. <button>提交</button>
  18. </form>
  19. </body>
  20. </html>

五、启动项目

1、启动项目

2、试一试登录能否成功,登录成功就会出现以下页面

 3、测试以下删除和编辑功能

我们来删除一条记录试试

 

 尝试编辑功能

总结:

这个实训项目其实是简单的进行了各个页面之间的跳转,数据的统计以及后台数据显示前台、还有进行了对数据增加、删除、修改和查找的这些个操作。项目其实看着很简单,但是一个人独立完成的话还是需要一些时间。

在做这个项目的时候,也遇到了很多的问题和挫折,但恰恰是这些不成功的经历让我及时的发现问题,不断的推进项目的进程,同样也提高了我自身的能力。通过自己的努力,解决了一个又一个的难题,突破了自身的能力也提高了自己的自信,相信自己能做出一个完整的项目。

完成了这个实训项目,虽然不够完美并且也还有欠缺的地方没有不足,但这也算是对学习了一年的Python来说有了一个简单的交代。这个项目还可以更加的完美,希望通过之后的学习,能够将它完善并且写出更好的Django项目。

原文链接:https://blog.csdn.net/Stars_Baek/article/details/122366893







所属网站分类: 技术文章 > 博客

作者:jiem

链接:https://www.pythonheidong.com/blog/article/1594414/e397182d0052d85f436f/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

10 0
收藏该文
已收藏

评论内容:(最多支持255个字符)