广告区
广告区
关注本站官方公众号:程序员总部,领取三大福利!
福利一:python和前端辅导
福利二:进程序员交流微信群,专属于程序员的圈子
福利三:领取全套零基础视频教程(python,java,前端,php)
发布于2022-06-21 00:05 阅读(483) 评论(0) 点赞(10) 收藏(5)
目录
1、在index应用下创建一个templates目录,再在templates目录下创建一个index目录,用来存放html文件
在配置文件settings.py里配置数据库信息(注意密码要换成自己数据库的密码)
(1)创建数据库-----Lirbrary
(2)设置数据库连接模块
在项目的初始化文件里设置数据库连接模块
(3)执行数据迁移命令
在控制台依次执行两条数据迁移命令,生成数据表
python manage.py makemigrations
python manage.py migrate
查看生成的数据表
(1)主路由配置
配置主路由 - Library里的urls.py
在控制台执行python manage.py startapp index
在配置文件settings.py里注册index应用
在index的models.py里创建图书模型和用户信息模型类
- from django.db import models
- #创建图书模型
- class Books(models.Model):
-
- id=models.AutoField('编号',primary_key=True)
- number=models.CharField('总编号',max_length=10)
- category=models.CharField('分类号',max_length=10)
- name=models.CharField('书名',max_length=50)
- author=models.CharField('作者',max_length=10)
- press=models.CharField('出版单位',max_length=50)
- price=models.DecimalField('单价',decimal_places=2,max_digits=6)
- def __str__(self):
- return str(self.name)
-
- #用户信息类
- class User(models.Model):
- id = models.AutoField('编号',primary_key=True)
- username=models.CharField('用户名',max_length=20)
- password=models.CharField('密码',max_length=50)
- last_Login_Time=models.DateTimeField('上次登录时间')
- def __str__(self):
- return str(self.username)
在index的views.py里创建
- from django import db
- from django.http import HttpResponse
- from django.shortcuts import render, redirect
- from itsdangerous import json
- from index.models import User,Books
- #创建登录视图函数
-
- def loginView(request):
- return render(request, '../templates/index/login.html')
-
- #创建处理登录请求的视图函数
- def do_loginView(request):
- #判断请求方式
- if request.method =='POST':
- #获取登录表单提交的数据
- username=request.POST.get('username')
- password=request.POST.get('password')
- #利用用户模型查询
- users = User.objects.raw('select * from index_user where username= %s and password=%s',params=[username,password])
- #判断用户是否登录成功
- if len(users)>0:
- books=Books.objects.all()
- return render(request, '../templates/index/books.html', locals())
- else:
- login_msg=['用户名或密码错误']
- return render(request, '../templates/index/login.html', {'data':json.dumps(login_msg)})
-
- #创建显示图书视图函数
- def booksView(request):
- books =Books.objects.all()
- return render(request, '../templates/index/books.html', locals())
-
- #删除图书视图函数
- def del_publisher(request):
-
- id=request.GET.get('id')
- Books.objects.filter(id=id).delete()
- books = Books.objects.all()
- return render(request, '../templates/index/books.html', locals())
- #编辑图书视图
- def ditbooks(request):
- id = request.GET.get('id')
- obj_list=Books.objects.filter(id=id)
- if not obj_list:
- return HttpResponse('要编辑的数据不存在')
- obj=obj_list[0]
- if request.method=='POST':
- books_id=request.POST.get('books_id')
- books_number = request.POST.get('books_number')
- books_category = request.POST.get('books_category')
- books_name = request.POST.get('books_name')
- books_author = request.POST.get('books_author')
- books_press = request.POST.get('books_press')
- books_price = request.POST.get('books_price')
- obj.id=books_id
- obj.number=books_number
- obj.category=books_category
- obj.name=books_name
- obj.author=books_author
- obj.press=books_press
- obj.price=books_price
- obj.save()
- books = Books.objects.all()
- return render(request,'../templates/index/books.html', locals())
- return render(request,'../templates/index/dit.html', {'obj':obj})
在主路由文件里导入上述视图函数
在控制台依次执行两条命令
python manage.py makemigrations
python manage.py migrate index 0001_initial
查看生成的表
登录页面——login.html
图书显示及删除页面——books.html
编辑页面——dit.html
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>用户登录</title>
- </head>
- <body>
- <h3 style="text-align: center">用户登录</h3>
- <form id="frmLogin" action="do_login" method="post">
- {% csrf_token %}
- <table class="tb" border="1" cellpadding="10" style="margin: 0px auto">
- <tr>
- <td align="center">账号</td>
- <td><input id="username" type="text" name="username"/></td>
- </tr>
- <tr>
- <td align="center">密码</td>
- <td><input id="password" type="password" name="password"/></td>
- </tr>
- <tr align="center">
- <td colspan="2">
- <input type="submit" value="登录"/>
- <input type="reset" value="重置"/>
- </td>
- </tr>
- </table>
- <script language="JavaScript">
- login_msg={{ data | safe }};
- if (login_msg !=null){
- alert(login_msg);
- }
- </script>
- </form>
-
- </body>
- </html>
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>图书管理系统</title>
- </head>
- <body>
- <h3 align="center">图书信息</h3>
- <table border="1" cellpadding="7" align="center">
- <tr>
- <th>编号</th>
- <th>总编号</th>
- <th>分类号</th>
- <th>书名</th>
- <th>作者</th>
- <th>出版单位</th>
- <th>单价</th>
- <th>操作</th>
- </tr>
- {% for book in books %}
- <tr>
- <td width="50" align="center">{{ book.id }}</td>
- <td width="100" align="center">{{ book.number }}</td>
- <td width="100" align="center">{{ book.category }}</td>
- <td width="100" align="center">{{ book.name }}</td>
- <td width="100" align="center">{{ book.author }}</td>
- <td width="130" align="center">{{ book.press }}</td>
- <td width="100" align="center">{{ book.price }}</td>
- <td width="200" align="center"><a href="/delete/?id={{ book.id }}" target="_blank">删除</a>
- <a href="/dit/?id={{ book.id }}" target="_blank">编辑</a>
- </td>
- </tr>
- {% endfor %}
- </table>
- </body>
- </html>
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>编辑</title>
- </head>
- <body>
- <form action="" method="post">
- {% csrf_token %}
- <p>编号:<input type="text" name="books_id" value="{{ obj.id}}"></p>
- <p>总编号:<input type="text" name="books_number" value="{{ obj.number }}"></p>
- <p>分类号:<input type="text" name="books_category" value="{{ obj.category }}"></p>
- <p>书名:<input type="text" name="books_name" value="{{ obj.name }}"></p>
- <p>作者:<input type="text" name="books_author" value="{{ obj.author }}"></p>
- <p>出版单位:<input type="text" name="books_press" value="{{ obj.press }}"></p>
- <p>单价:<input type="text" name="books_price" value="{{ obj.price }}"></p>
- <button>提交</button>
- </form>
- </body>
- </html>
我们来删除一条记录试试
尝试编辑功能
这个实训项目其实是简单的进行了各个页面之间的跳转,数据的统计以及后台数据显示前台、还有进行了对数据增加、删除、修改和查找的这些个操作。项目其实看着很简单,但是一个人独立完成的话还是需要一些时间。
在做这个项目的时候,也遇到了很多的问题和挫折,但恰恰是这些不成功的经历让我及时的发现问题,不断的推进项目的进程,同样也提高了我自身的能力。通过自己的努力,解决了一个又一个的难题,突破了自身的能力也提高了自己的自信,相信自己能做出一个完整的项目。
完成了这个实训项目,虽然不够完美并且也还有欠缺的地方没有不足,但这也算是对学习了一年的Python来说有了一个简单的交代。这个项目还可以更加的完美,希望通过之后的学习,能够将它完善并且写出更好的Django项目。
原文链接:https://blog.csdn.net/Stars_Baek/article/details/122366893
关注本站官方公众号:程序员总部,领取三大福利!
福利一:python和前端辅导
福利二:进程序员交流微信群,专属于程序员的圈子
福利三:领取全套零基础视频教程(python,java,前端,php)
关注公众号回复python,免费领取 全套python视频,回复充值+你的账号,免费为您充值1000积分
作者:jiem
链接:https://www.pythonheidong.com/blog/article/1594414/e397182d0052d85f436f/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!