python文件管理系统项目_Django图书管理系统项目的搭建

基础配置:

新创一个django项目,取名为homework_book

在setting里进行基础配置

DATABASES={'default':{'ENGINE' : 'django.db.backends.mysql', #连接MYSQL数据库

'NAME' : 'bookhomework', #设置连接的库名

'HOST':'127.0.0.1', #设置本地连接方式

'POST':3306, #设置端口号

'USER':'root', #以root用户权限登陆数据库

'PASSWORD':'', #写入sql数据库登陆密码,没有设置不写

'OPTIONS':{ #设置严格模式

'init_command':'set sql_mode="STRICT_TRANS_TABLES"',

}

}

}

(严格模式的设置:当传入一个字符串大于设置本身最大长度字符串时,就会报错,这样不会传入一个截取不了全部的字符)

STATIC_URL= '/static/' #别名设置 ,别名的设置让html文件直接引入改路径,即使别名名称更改,也不要紧

STATICFILES_DIRS=[

os.path.join(BASE_DIR,'statics')

]

在与settings.py文件同级目录下的__init__文件中设置

importpymysql

pymysql.install_as_MySQLdb()

在models.py文件中写入数据,是给数据库中的表格添加数据类型:

from django.db import models #引入models模块

#Create your models here.

classBook(models.Model):

name=models.CharField(max_length=32)#设置名字,类型为字符串类型,最大长度为32个字符

price=models.FloatField()#设置价格,类型为浮点型

date=models.DateField() #设置时间

publisher=models.CharField(max_length=32)#设置出版社名称,名字最大长度为32个字节

运行manage.py,输入命令,进行数据库表格数据的同步:

makemigrations

migrate

以上两行代码执行成功后,在python中的databases中连接数据库,即可看到连接的库中创建的表格,再在数据库中添加数据就行

在项目文件夹下创建一个statics文件夹,该文件负责存储静态文件,将下载好的bootstrap文件和jquery-3.4.1文件传入其中,为之后的html文件引用用

在templates文件中创建一个show_books.html文件:

{% load static %}#引入静态文件

Title

查看书籍

编号书籍名称价格出版日期出版社操作

{% for books_obj in all_books_objs %}#使用for循环来让数据库中的各行数据逐个调价到表格中{{ forloop.counter }}{{ books_obj.name }}{{ books_obj.price }}{{ books_obj.date|date:'Y-m-d' }}

#这个时间格式设置是将原本的date格式转换为普通用户也能看懂的格式

{{ books_obj.publisher }} 编辑{# 删除#}

删除

#(两种方法实a标签的跳转,一个是固定格式路径的,一个是引入静态文件的)

{% endfor %}

View Code

在urls和views里的配置

urls:from app01 importviews

urlpatterns=[

url(r'^show_books/', views.show_books,name='show_books'),

views:from django.shortcuts importrender,HttpResponse,redirectfrom app01 importmodelsdefshow_books(request):if request.method=='GET':

all_book_objs=models.Book.objects.all()#引入数据库中所有数据的对象

return render(request,'show_books.html',

{'all_books_objs':all_book_objs})#将对象写入到html文件中去

效果图:

此时我们需要做的是点击按钮,做出相应的点击事件,首先配置添加书籍按钮

点击添加书籍按钮的流程步骤:

1.点击添加按钮,跳转到添加书籍信息的网址中

2.写入相关的要添加的书籍的信息

3.点击提交按钮,将添加的信息写入到数据库中

4.再次跳转到查看书籍的网页当中去

5.此时查看书籍调取的是数据库表格中的所有信息,就会将所有的信息展示出来,包括新创建的书籍信息

首先给查看书籍网页中的添加按钮添加一个a标签,让他点击就自动跳转到添加书籍的网页中去

#href里的大括号里的内容代表的是动态引入url网页的意思,add_book网页放的是同级目录下,所以可以直接写文件名,如果想要动态引入的话,在urls.py配置里面也必须添加上相关的

路径名称

跳转到add_book网页中,进行相关的网页添加书籍信息配置:

{% load static %}#别名的引入

Title

#这个是引入bootstrap文件,利用别名的路径设置

添加书籍

#创建一个表单格式,提交的按钮请求方式为post方法,提交后路径跳转名称还是为'add_book'

{% csrf_token %}

书籍名称

书籍价格

出版日期

出版社

Submit

#写入一个button提交按钮

#同样引入bootstrap的js文件

View Code

在urls和views里的配置

urls:from app01 importviews

url(r'^add_book/', views.add_book,name='add_book'),

views:defadd_book(request):if request.method=='GET':return render(request,'add_book.html')

效果图

设置add_book里的点击按钮事件点击之后就将写入的信息保存到数据库中,设置按钮点击的请求方式为post请求方式,添加views函数的数据

from app01 importmodelsdefadd_book(request):if request.method=='GET':return render(request,'add_book.html')else:#此时的否则就是当为post请求提交时,做出以下操作

print(request.POST)#将html文件表单里的内容逐个提取出来,并进行赋值

#name=request.POST.get('name')

#price=request.POST.get('price')

#date=request.POST.get('date')

#publisher=request.POST.get('publisher')

#第二种方法,获得html表单里的内容,并将以字典的格式展现

book_info_dict=request.POST.dict()print(book_info_dict)#将字典中多余的键值对删除掉

del book_info_dict['csrfmiddlewaretoken']#进行数据库的数据创建,以字典的打散形式进行传输数据,同样实现功能

models.Book.objects.create(**book_info_dict)#数据库进行创建新的数据

#models.Book.objects.create(

#name=name,

#price=price,

#date=date,

#publisher=publisher

#)

#进行页面跳转

return redirect('show_books')

(最后一步进行网页跳转到show_books网页中,也可以使用return render方式的方法进行,但是如果只传入一个网页,那么里面的每行数据不会体现出来,只会出现一个标题栏,因为并没有将数据库中的全部数据全部提取出来,并进行写入html网页的这步操作,所以才会这样,所以还要加上这一步;

综上所述,直接使用redirect跳转方式可以直接找到数据,建议使用redirect方法)

在show_books网页中设置删除按钮和编辑按钮点击事件

给show_books里的删除按钮增加a标签的跳转功能

删除#跳转的数据为del_book/后面是点击的删除的按钮的id号

urls和views里的配置:urls:

url(r'^del_book/(\d+)', views.del_book,name='del_book'),#此时在这里配置加上数字的正则匹配符,就是获得第几行点击的删除按钮,回来执行函数时,可以直接找到该行数据并进行删除

views:defdel_book(request,n):#n参数代表的时传入的是第几行数据

models.Book.objects.filter(pk=n).delete()#数据库找到关于第几行的数据,并进行删除

return redirect('show_books')

编辑按钮点击事件的内容编辑:

首先在show_books按钮的编辑按钮增加跳转内容

编辑

编写一个edit_book.html文件

{% load static %}

Title

修改书籍

{% csrf_token %}

书籍名称

#设置表格里的内容生成为本行的原来内容

书籍价格

出版日期

出版社

Submit

View Code

在urls和views里的配置:

urls:

url(r'^edit_book/(\d+)', views.edit_book,name='edit_book'),

views:defedit_book(request,n):if request.method=='GET':

res=models.Book.objects.get(pk=n)return render(request,'edit_book.html' ,{'res':res})else:

book_info_dict=request.POST.dict()print(book_info_dict)del book_info_dict['csrfmiddlewaretoken']

models.Book.objects.filter(pk=n).update(**book_info_dict)return redirect('show_books')#如果为get模式请求,则自动推送edit_book.html文件,如果为post请求,则将表单里的内容数据提取出来,找到数据库对应的行数据进行替换,替换完成后进行跳转到show_books网页中去

整体流程图:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值