django框架单表操作之增删改实例分析


Posted in Python onDecember 16, 2019

本文实例讲述了django框架单表操作之增删改。分享给大家供大家参考,具体如下:

首先找到操作的首页面

代码如下

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <link rel="stylesheet" href="/static/bootstrap/css/bootstrap.min.css" rel="external nofollow" >
  <title>书列表</title>
</head>
<body>
<div class="container">
  <a href="/add_book/" rel="external nofollow" class="btn btn-success">添加新书</a>
  <div class="panel panel-primary">
    <div class="panel-heading">书籍管理</div>
    <div class="panel-body">
      <table class="table table-bordered table-striped">
        <thead>
        <tr>
          <th>#</th>
          <th>书名</th>
          <th>操作</th>
        </tr>
        </thead>
        <tbody>
        {% for book in book_list %}
          <tr data-id="{{ book.id }}">
            <td>{{ forloop.counter }}</td>
            <td>{{ book.title }}</td>
            <td><a href="/delete_book/?id={{ book.id }}" rel="external nofollow" class="btn btn-danger">删除</a>
            <a href="/edit_book/?id={{ book.id }}" rel="external nofollow" class="btn btn-info">修改</a></td>    此处的?id可以改成 ?iid,或者其他的名称,在views.py文件里对函数edit_book修改即可edit_id=request.GET.get('iid')
 </tr> {% endfor %} </tbody> </table> </div> </div> </div> </body> </html>

django框架单表操作之增删改实例分析

主页:

django框架单表操作之增删改实例分析

之后,根据不同的操作指向不同的页面,这部分功能需要修改urls.py

from django.conf.urls import url
from django.contrib import admin
from app01 import views
urlpatterns = [
  # url(r'^admin/', admin.site.urls),
  url(r'^home/',views.home),
  url(r'^index/',views.index),
  url(r'^login/',views.login),
  url(r'^book_list/',views.book_list),
  #添加新书
  url('^add_book/',views.add_book),
  #删除书籍
  url('^delete_book/',views.delete_book),
  #修改书籍
  url(r'^edit_book/',views.edit_book),
]

其次,不同操作指向不同的页面

add_book.html

主要的部分

<form class="form-horizontal" action="/add_book/" method="post"> #提交到 add_book
          <div class="form-group">
            <label for="inputbookname" class="col-sm-2 control-label">书籍名称</label>
            <div class="col-sm-3">
              <input type="text" class="form-control" id="inputbookname" name="book_name"> 
            </div>
          </div>
          <div class="form-group">
            <div class="col-sm-offset-2 col-sm-10">
              <button type="submit" class="btn btn-default">添加新书</button>

edit_book.html

主要部分

<form class="form-horizontal" action="/edit_book/" method="post">
  <input hidden type="text" name="book_id" value="{{ book.id }}">
  <div class="form-group">
    <label for="inputbookname" class="col-sm-2 control-label">书籍名称</label>
    <div class="col-sm-3">
      <input type="text" class="form-control" id="inputbookname" name="book_name" value="{{ book.title }}">
    </div>
  </div>
  <div class="form-group">
    <div class="col-sm-offset-2 col-sm-10">
      <button type="submit" class="btn btn-default">提交修改</button>

删除在后台执行

最后后台函数的配置views.py

def book_list(request):
  #找到所有的书
  books=models.Book.objects.all()
  return render(request,"book_list.html",{"book_list":books})
def add_book(request):
  #判断是否为post
  if request.method=="POST":
    new_book_name=request.POST.get("book_name")
    #去数据库创建一条记录
    models.Book.objects.create(title=new_book_name)
    #跳转回之前书籍展示的页面
    return redirect("/book_list/")
  #返回一个页面让用户填写新书的相关信息
  return render(request,"add_book.html")
def delete_book(request):
  #取到要删除书的id,如何从get请求获取数据
  delete_id=request.GET.get("id")
  #根据id值去数据库取对应的数据
  models.Book.objects.get(id=delete_id).delete()
  return redirect("/book_list/")
def edit_book(request):
  if request.method=="POST":
    #取到书的id
    book_id=request.POST.get("book_id")
    #用户修改后的名称
    new_book_title=request.POST.get("book_name")
    #在数据库中查找id对应的记录
    book_obj= models.Book.objects.get(id=book_id)
    #将用户的名称给修改到这个id中
    book_obj.title=new_book_title
    #保存提交
    book_obj.save()
    #跳转到书列表的页面
    return redirect("/book_list/")
  edit_id=request.GET.get('id')
  book=models.Book.objects.get(id=edit_id)
  return render(request,"edit_book.html",{"book":book}) #以字典的方式传递变量
#note:
# 对书籍进行编辑,是通过book_list页面传递id(或者iid),在对上面的函数获取其id时得到edit_id,知道其id和title就可以进行修改

希望本文所述对大家基于Django框架的Python程序设计有所帮助。

Python 相关文章推荐
Windows下安装python2.7及科学计算套装
Mar 05 Python
Python之py2exe打包工具详解
Jun 14 Python
Django基础知识与基本应用入门教程
Jul 20 Python
PyCharm代码提示忽略大小写设置方法
Oct 28 Python
django框架使用views.py的函数对表进行增删改查内容操作详解【models.py中表的创建、views.py中函数的使用,基于对象的跨表查询】
Dec 12 Python
selenium+python实现自动登陆QQ邮箱并发送邮件功能
Dec 13 Python
浅谈python之自动化运维(Paramiko)
Jan 31 Python
解决Pycharm中恢复被exclude的项目问题(pycharm source root)
Feb 14 Python
使用Pyhton 分析酒店针孔摄像头
Mar 04 Python
python实现在线翻译
Jun 18 Python
python中time、datetime模块的使用
Dec 14 Python
浅谈matplotlib默认字体设置探索
Feb 03 Python
Python生成个性签名图片获取GUI过程解析
Dec 16 #Python
Python列表切片常用操作实例解析
Dec 16 #Python
python之pymysql模块简单应用示例代码
Dec 16 #Python
python装饰器使用实例详解
Dec 14 #Python
python函数不定长参数使用方法解析
Dec 14 #Python
python如何实现不用装饰器实现登陆器小程序
Dec 14 #Python
python模块和包的应用BASE_PATH使用解析
Dec 14 #Python
You might like
PHP远程连接MYSQL数据库非常慢的解决方法
2008/07/05 PHP
php实现utf-8和GB2312编码相互转换函数代码
2013/02/07 PHP
详解PHP的Laravel框架中Eloquent对象关系映射使用
2016/02/26 PHP
div层的移动及性能优化
2010/11/16 Javascript
js 获取(接收)地址栏参数值的方法
2013/04/01 Javascript
JavaScript的strict模式与with关键字介绍
2014/02/08 Javascript
解决bootstrap中modal遇到Esc键无法关闭页面
2015/03/09 Javascript
AngularJS模块管理问题的非常规处理方法
2015/04/29 Javascript
JavaSacript中charCodeAt()方法的使用详解
2015/06/05 Javascript
10个很棒的jQuery代码片段
2015/09/24 Javascript
学习JavaScript设计模式之装饰者模式
2016/01/19 Javascript
vue.js入门教程之基础语法小结
2016/09/01 Javascript
AngularJS表格添加序号的方法
2017/03/03 Javascript
微信小程序开发之实现自定义Toast弹框
2017/06/08 Javascript
微信小程序使用audio组件播放音乐功能示例【附源码下载】
2017/12/08 Javascript
vuejs实现递归树型菜单组件
2018/01/13 Javascript
Javascript中prototype与__proto__的关系详解
2018/03/11 Javascript
深入浅析AngularJs模版与v-bind
2018/07/06 Javascript
基于Angular中ng-controller父子级嵌套的相关属性详解
2018/10/08 Javascript
详解Vue.js在页面加载时执行某个方法
2018/11/20 Javascript
详解Vue组件之作用域插槽
2018/11/22 Javascript
教你30秒发布一个TypeScript包到NPM的方法步骤
2019/07/22 Javascript
微信小程序实现点击空白隐藏的方法示例
2019/08/13 Javascript
请求时token过期自动刷新token操作
2020/09/11 Javascript
Python实现去除代码前行号的方法
2015/03/10 Python
详解python中requirements.txt的一切
2017/03/03 Python
python开发利器之ulipad的使用实践
2017/03/16 Python
非递归的输出1-N的全排列实例(推荐)
2017/04/11 Python
Python 调用Java实例详解
2017/06/02 Python
使用python-opencv读取视频,计算视频总帧数及FPS的实现
2019/12/10 Python
军神教学反思
2014/02/04 职场文书
妇女儿童发展规划实施方案
2014/03/16 职场文书
班主任评语大全
2014/04/26 职场文书
如何写早恋检讨书
2014/09/10 职场文书
基层党支部整改方案
2014/10/25 职场文书
springboot为异步任务规划自定义线程池的实现
2022/06/14 Java/Android