图书管理系统多少钱一套,图书管理系统毕业论文
图书管理系统-基于形式组件和模型表单改造添加和编辑_ wx 62 aae 4 be 59 a 4的技术博客_博客
添加基于形式组件改造步骤11.为了区分自己写的形式类和视图逻辑,所以工作中需要区分开来,那么就可以在应用下创建一个叫实用工具的文件夹,专门存放我们写的形式类,py文件名随便起
2.在创建好巴拉圭文件,如mymoforms.py文件中写上定义的模型类
3.修改超文本标记语言页面
4.编写逻辑
自定义模型类代码来自django的my forms . py导入表单
从app01导入模型
课表(表格。表单):
书籍数据校验类
标题=表单。夏菲尔德(
标签=书名,
最大长度=64,
# widget=表单TextInput(attrs={ class : form-control })
)
发布日期=表单。夏菲尔德(
标签=出版日期
)
价格=形式100000分米菲尔德(
标签=价格,
max_value=100,
最小值=1,
max_digits=10,
小数位数=2,
)
发布=表单。模型选择字段(
标签=出版社,
queryset=模型Publish.objects.all(),
)
作者=表单。模型多重选择字段(
标签=作者,
queryset=模型Author.objects.all()
)
#想在自己定义的形式类初始化的时候统一加一些样式
def __init__(self,*args,**kwargs):
超级()。__init__(*args,**kwargs)
#给所有的类里面加上一个属性
对于名称,self.fields.items()中的字段:
字段。小部件。attrs。更新({ class : form-control })add _ book。超文本标记语言代码{% load static %}
!声明文档类型
html lang=en
头
meta charset=UTF-8
标题标题/标题
link rel=样式表 href= { % static 插件/引导-3。3 .7-dist/CSS/bootstrap。量滴CSS“% }”
/头
身体
差异
氕添加书籍/h1
差异
差异
form action= method= post novalidate
表单%}中字段的{%
差异
的标签= { { field。id _ for _ label } } { { field。label } }/label
{{ field }}
{{ field.errors.0 }}
/div
{% endfor %}
按钮提交/按钮
/表单
/div
/div
/div
/body
/html视图逻辑def add_book(请求):
if request.method==GET :
#实例化形式类
form=BookForm()
返回渲染(请求、 add_book.html 、{form:form})
elif request.method==POST :
打印(请求。帖子)
#实例化一个对象
form=BookForm(data=request .帖子)
if form.is_valid():
print(form.cleaned_data) #校验的时候会根据编号查找得到对象
#{ 标题: 小雪,发布日期: 2020-02-04 ,价格:十进制( 12.5 ),发布:发布:一本道出版社, authors: QuerySet [作者:王振,作者:刘伟] }
authors _ objs=form。已清理_数据。波普(“作者”)
模型.Book.objects.create(
**form.cleaned_data#直接用打散的方式,正好酒馆这个属性对应的是对象,如果是列名发布标识则需要对应具体的编号值
)
book _ obj。作者。add(* authors _ objs)#添加作者关系
#上面这三步,可以直接用一个form.save()方法就可以了
返回重定向( book_list )编辑基于模型表单组件改造自定义的模型类类图书模型表单(窗体。模型表单):
类别元:#为上面这个类做一些原信息配置
模特=模特。图书编号指定模型类
fields=__all__ #指定书模型类中的所有属性
模型表单会自动将这些属性转换为跟上面书籍形式类中定义的属性一样
书类里面的发布=模特ForeignKey(Publish )。作者=模型ManyToManyField(“作者")
会自动翻译成如下
发布=表单。模型选择字段(
标签=出版社,
queryset=模型Publish.objects.all(),
)
作者=表单。模型多重选择字段(
标签=作者,
queryset=模型Author.objects.all()
)
标签={
标题:书籍名称,
发布:出版社,
价格:价格,
发布日期:出版日期,
作者:作者,
}
错误消息={
标题:{ 必需:不能为空,最大长度:太长了,受不了},
价格:{ 必需:不能为空,}
}
# 想在自己定义的形式类初始化的时候统一加一些样式
def __init__(self,*args,**kwargs):
超级()。__init__(*args,**kwargs)
# 给所有的类里面加上一个属性
对于名称,self.fields.items()中的字段:
field . widget . attrs . update({ class : form-control })edit _ book.html文件{% load static %}
!声明文档类型
html lang=en
头
meta charset=UTF-8
标题标题/标题
link rel= style sheet href= { % static plugins/bootstrap-3 . 3 . 7-dist/CSS/bootstrap . min . CSS % }
/头
身体
差异
H1编辑书籍/h1
差异
差异
!-不传递路径,默认为当前路径-
form action= method= post novalidate
表单%}中字段的{%
差异
的标签= { { field . id _ for _ label } } { { field . label } }/label
{{ field }}
span {{ field.errors.0 }} /span
/div
{% endfor %}
提交按钮/按钮
/表单
/div
/div
/div
/body
/htmlview logic # edit基于modelform,先介绍一下自己定义的类model form。
def edit_book(请求,主键):
if request.method==GET :
old_book_obj=模型。Book.objects.get(pk=pk)
#当你想得到这个页面时,在输入框中显示这个数据的原始记录必须使用instance。
#如果不通过实例,就是添加页面的效果,也就是生成的标签没有默认值。
#函数是找到给定对象的所有属性记录值,然后自动添加初始属性的初始值。
form=BookModelForm(instance=old _ book _ obj)
return render(请求, edit_book.html ,{form:form})
elif request.method==POST :
old_book_obj=模型。Book.objects.get(pk=pk)
#如果实例没有通过,就是添加的效果;如果通过了,就是编辑了。
form=BookModelForm(data=request。POST,instance=old_book_obj)
If.is _ valid (): #进行检查
authors _ objs=form . cleaned _ data . pop( authors )
book_obj=models。Book.objects.create(
**form.cleaned_data#直接散,只是pub属性对应对象,如果是列名pub_id,则需要对应具体的id值。
)
book _ obj . authors . Add(* authors _ objs)#添加作者关系
#save()方法相当于做了上面三件事
Form.save() #所有数据验证完毕后,保存编辑,前提是增加参数instance=old_book_obj,否则增加一条数据,而不是修改。
返回重定向( book_list )
否则:
return render(请求, edit_book.html ,{form: form})
-
签名:代码过万,键盘坏了!
如果你觉得这篇文章对你帮助不大,记得“推荐”一下。在此感谢!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。