django进阶学习记录

前言: 这篇博客对上篇博客django进阶作下补充。

一、效果图

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用个循环便可在前端页面显示书名。

书列表:

    

登录后复制        {% for book in books %}            {{ book.name }}        {% endfor %}    

接下来实现第二个功能,创建数据。

先来看前端的html:


登录后复制

注意:

因为是创建数据,所以提交方式要用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个作者,为了方便看,我在后台打印出来了:

------->>: 新书A 2 ['2', '3']---->: [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。

登陆admin后台查看刚刚创建的新书A:

django进阶学习记录

 

以上就是django进阶学习记录的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2276117.html

(0)
上一篇 2025年2月27日 14:58:10
下一篇 2025年2月25日 18:18:14

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 详解django传递临时数据的方法

    把最近用到的临时数据传递总结下 有三种方法,cookie,session,cache 先说下对我来说会怎么选,cookie会用理解就行,我不常用,因为用户会关闭cookie,而且需要随着HttpResponse传递,有局限性 session…

    编程技术 2025年2月27日
    200
  • django server之间通过remote user相互调用方法

    首先,场景是这样的:存在两个django web应用,并且两个应用存在一定的联系。某些情况下彼此需要获取对方的数据。 但是我们的应用肯经都会有对应的鉴权机制。不会让人家随随便便就访问的对吧。好比上车要刷卡(滴,老人卡~~~)。我们知道在浏览…

    编程技术 2025年2月27日
    200
  • django教你熟练掌握富文本编辑器CKEditor的方法

    最近由于需要在django admin中使用到富文本编辑器,由于我比较喜欢ckeditor富文本编辑器,于是就有了这篇文章,下面这篇文章主要给大家介绍了在django中轻松使用富文本编辑器ckeditor的方法,需要的朋友可以参考下。 前言…

    2025年2月27日
    200
  • windows10下安装搭建django1.10.3和Apache2.4的详细教程

    最近发现很多教程都是在linux上搭建,windows上似乎天生不太适合,但是我还是愿意试试这个坑。下面这篇文章主要给大家介绍了在windows 10系统下安装搭建django1.10.3和apache2.4的方法,需要的朋友可以参考借鉴,…

    2025年2月27日
    200
  • Python中Django发送带图片和附件的邮件的实例详解

    本篇文章主要介绍了python中django发送带图片和附件的邮件 ,非常具有实用价值,需要的朋友可以参考下。 最近需要做集团的SRC系统。暂无安全研发,所以只能找我这个小菜兼职开发。系统使用Django框架,在整个过程中,有许多奇特的需求…

    2025年2月27日
    200
  • 实例详解django开发之settings.py中变量的全局引用

    当网站里面的一些内容,如邮箱,网站标题,网站的描述,这些东西我们可以存在数据库中也可以存放在我们的setting 文件中,这篇文章主要给大家介绍了django中settings.py变量的全局引用的相关资料,文中介绍的非常详细,需要的朋友可…

    2025年2月27日 编程技术
    200
  • 实例详解Python中Django后台自定义表单控件

    本篇文章主要介绍了python中django 后台自定义表单控件,其实 django 已经为我们提供了一些可用的表单控件,比如:多选框、单选按钮等,有兴趣的开业了解一下。 在 django 中我们可以在 admin.py 中添加 Model…

    2025年2月27日
    200
  • Django重新安装的步骤详解

    如果你打算从过去的一个版本升级django, 你需要先删除老版本的django之后,再安装新的版本。下面这篇文章主要给大家介绍了在django卸载之后重新安装的方法,文中给出了详细的步骤,需要的朋友可以参考借鉴,下面来一起看看吧。 前言 大…

    编程技术 2025年2月27日
    200
  • Django日志模块的配置详解

    日志在程序开发中是少不了的,通过日志我们可以分析到错误在什么地方,有什么异常。在生产环境下有很大的用处。在java 开发中通常用 log4j,logback 等三方组件。下面这篇文章主要介绍了django日志模块logging的相关资料,需…

    编程技术 2025年2月27日
    200
  • 详解Django中观察者模式

    django中提供了“信号调度”,用于在框架执行操作时解耦。通俗来讲,就是一些动作发生的时候,信号允许特定的发送者去提醒一些接受者。 Django提供一种信号机制。其实就是观察者模式,又叫发布-订阅(Publish/Subscribe) 。…

    编程技术 2025年2月27日
    200

发表回复

登录后才能评论