发布网友 发布时间:2022-04-23 05:26
共2个回答
懂视网 时间:2022-05-10 13:37
前言: 这篇博客对上篇博客django进阶作下补充。
前端界面较简单(丑),有两个功能:
从数据库中取出书名 eg: 新书A
在form表单输入书名,选择出版社,选择作者(多选),输入完毕后一点击创建新书submit,就在数据库创建数据
我们先来实现第一个功能,根据数据库数据在页面打印出书名。
1. 添加url路由
url(r'^book/', views.book),
2. 在views.py定义book方法
django默认使用GET方式,即获取数据;如果想创建/修改数据,比如待会要实现的第二个功能,就需要用POST方式。
def book(request): books = models.Book.objects.all() #找到所有的书 publisher_list = models.Publisher.objects.all() author_list = models.Author.objects.all() print("---->:", request) return render(request, "app01/book.html", {"books":books, "publishers":publisher_list, "authors":author_list})
3. 在templates/app01下创建book.html:
books为数据库中所有书的对象集合,在html用个循环便可在前端页面显示书名。
<h2>书列表:</h2> <ul> {% for book in books %} <li>{{ book.name }}</li> {% endfor %} </ul>
先来看前端的html:
<form method="post" action="/payment/book/"> {% csrf_token %} book name:<input type="text" name="name"/> <select name="publisher_id"> {% for publisher in publishers %} <option value="{{ publisher.id }}">{{ publisher.name }}</option> {% endfor %} </select> <select name="author_ids" multiple="multiple"> {% for author in authors %} <option value="{{ author.id }}">{{ author.first_name }}</option> {% endfor %} </select> <div> <input type="submit" value="创建新书"/> </div> </form>
注意:
因为是创建数据,所以提交方式要用post, action="/payment/book/"是一条url, 表示将数据提交到book方法,数据封装在request参数。
你在选择出版社时,要将出版社名传到后台?? 其实完全不用,你只要将选中id传到后台就可以了。因此我在option标签加上value属性,用来获致出版社的id, 当你一点击submit提交数据时,value中的id会提交给select标签的name属性,name属性再将数据提交到后台。
你会发现html代码第一行有{% csrf_token %},这个是什么意思我现在还不知道~_~,我将这句代码去掉会提交不了数据!!
再来看后台book方法
def book(request): if request.method == "POST": #若是创建书的数据 print(request.POST) book_name = request.POST.get("name") publisher_id = request.POST.get("publisher_id") # 即使在前端页面选择多个作者只会返回一个值,只能取到最后一个作者的id #author_ids = request.POST.get("author_ids") author_ids = request.POST.getlist("author_ids") #getlist 可取出所有作者的id #生成一个书的对象 new_book = models.Book( name = book_name, publisher_id = publisher_id, publish_date = "2017-3-18" ) new_book.save() #同步到数据库 #new_book.authors.add(1,2) 添加作者 new_book.authors.add(*author_ids) #author_ids为列表,需在前面加上*转化为id print("------->>:", book_name,publisher_id,author_ids) books = models.Book.objects.all() publisher_list = models.Publisher.objects.all() author_list = models.Author.objects.all() print("---->:", request) return render(request, "app01/book.html", {"books":books, "publishers":publisher_list, "authors":author_list})
当我在前端界面输入书名: 新书A, 选中第二个出版社,选中第2和第3个作者,为了方便看,我在后台打印出来了:
<QueryDict: {'name': ['新书A'], 'csrfmiddlewaretoken': ['V9OdHSJ10OFSq3r vI41tggns1W2VxwV'], 'publisher_id': ['2'], 'author_ids': ['2', '3']}> ------->>: 新书A 2 ['2', '3'] ---->: <WSGIRequest: POST '/payment/book/'> [18/Mar/2017 14:06:23] "POST /payment/book/ HTTP/1.1" 200 1335
根据打印结果知道author_ids是一个列表,当我为书添加作者时,用下面的代码:
new_book.authors.add(*author_ids)
为什么要在列表前加上*?不加上*是会曝错的! 加上*是为了将列表形式["2","3"]转化为作者id形式2,3。
热心网友 时间:2022-05-10 10:45
写心得体会的格式
、什么是“心得体会"
在参与社会生活与社会实践中,人们往往会产生有关某项工作的许多感受和体会,这些感受和体会不一定经过严密的分析和思考,可能只是对这项工作的感性认识和简单的理论分析.用文字的形式把这些心得表达出来,就是“心得体会”.
“心得体会”是一种日常应用文体,属于议论文的范畴.一般篇幅可长可短,结构比较简单.
2、心得体会怎么写?心得体会的写法
心得体会的基本格式大致由以下几个部分组成
I、标题
心得体会的标题可以采用以下几种形式:
在XX活动(或XX工作)中的心得体会
关于XX活动(或XX工作)心得体会(或心得)
心得体会
如果文章的内容比较丰富,篇幅较长,也可以采用双行标题的形式,大标题用一句精练的语言总结自己的主要心得,小标题是“在XX活动(或X X工作)中的心得体会”,例如:
从小处着眼,推陈出新
——参加大学生科技创新大赛的心得
II、正文 这是心得体会的中心部分
(1)开头 简述所参加的工作(或活动)的基本情况,包括参加活动的原因、时间、地点、所从事的具体工作的过程及结果.
(2)主体 由于心得体会比较多地倾向于个人的主观感受和体会,而人的认识往往有一个逐渐发展和演变的过程,因此,在心得体会的主体部分的结构安排上,常常以作者对客观事物的主观感受和认识发展、情感变化为中心线索,组织材料,安排层次.具体的安排方法主要有两种:并列式结构和递进式结构.
A.从不同角度将自己的感受和体会总结成几个不同的方面,分别加以介绍,层次之间是并列关系.即:
体会(一)
体会(二)
体会(三)
•••••••••
在每一部分内部,理论上总述,再列举事实加以证明的方法,使文章有理有据,不流于空(华考范文网
B.递进式结构比较适合于表现前后思想的变化过程,尤其是针对以前曾有错误认识,经过活动(或工作)有所改变的情况.
在层次安排上,递进式结构应先简述以前的错误认识,再叙述参加活动的原因、时间、地点、简单经过,然后集中笔墨介绍经过活动所产生的新的认识和感受,重点放在过去的错误与今天的认识之间的反差,以此证明活动的重要意义.
(3)结尾 心得体会的结尾一般可以再次总结并深化主题,也可以提出未来继续努力的方向,也可以自然结尾,不专门作结.
(4)署名 心得体会一般应在文章结尾的右下方写上姓名,也可以在文章标题下署名,写作日期放在文章最后.
3、写作心得体会应注意的问题
(1)避免混同心得体会和总结的界限.一般来说,总结是单位或个人在一项工作、一个题结束以后对该工作、该问题所做的全面回顾、分析和研究,力求在一项工作结束后找出有关该工作的经验教训,引出规律性的认识,用以指导今后的工作,它注重认识的客观性、全面性、系统性和深刻性.在表现手法上,在简单叙述事实的基础上较多的采用分析、推理、议论的方式,注重语言的严谨和简洁.
心得体会相对来说比较注重在工作、学习、生活以及其他各个方面的主观认识和感受,往往紧抓一两点,充分调动和运用叙述、描写、议论和说明甚至抒情的表达方式,在叙述工作经历的同时,着重介绍自己在工作中的体会和感受.它追求感受的生动性和独特性,而不追求其是否全面和严谨,甚至在有些情况下,可以‘‘只论一点,不计其余’’.
(2)实事求是,不虚夸,不作假,不无病*.心得体会应是在实际工作和活动中真实感受的反映,不能扭捏作态,故作高深,更不能虚假浮夸,造成内容的失实.