首先找到操作的首页面‘

代码如下

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="/static/bootstrap/css/bootstrap.min.css">
<title>书列表</title>
</head>
<body>
<div class="container"> <a href="/add_book/" 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 }}" class="btn btn-danger">删除</a>
<a href="/edit_book/?id={{ book.id }}" 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>

主页:

之后,根据不同的操作指向不同的页面,这部分功能需要修改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---单表操作之增删改的更多相关文章

  1. Django---ORM简介丶单表操作丶增删改查

    一丶ORM简介 MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人 ...

  2. Django【第6篇】:Django之ORM单表操作(增删改查)

    django之数据库表的单表查询 一.添加表记录 对于单表有两种方式 # 添加数据的两种方式 # 方式一:实例化对象就是一条表记录 Frank_obj = models.Student(name =& ...

  3. django单表操作,增、删、改、查

    一.实现:增.删.改.查 1.获取所有数据显示在页面上 model.Classes.object.all(),拿到数据后,渲染给前端;前端通过for循环的方式,取出数据. 目的:通过classes(班 ...

  4. hibernate_07_单表操作_增删改操作

    首先,创建类对象 package com.imooc.hibernate; public class Address { private String postcode; //邮编 private S ...

  5. Django单表操作

    一.数据库相关设置 配置ORM的loggers日志: # 配置ORM的loggers日志 LOGGING = { 'version': 1, 'disable_existing_loggers': F ...

  6. SQLAlchemy表操作和增删改查

    一.SQLAlchemy介绍 SQLAlchemy是一个基于Python实现的ORM框架.该框架建立在 DB API之上,使用关系对象映射进行数据库操作,简言之便是:将类和对象转换成SQL,然后使用数 ...

  7. Maven+SSM框架,实现单表简单的增删改查

    目录 1.创建web Maven项目 2.创建java源码文件和resources资源文件 3.创建数据库配置文件:jdbc.properties 4.项目总体目录: 5.添加spring配置文件:a ...

  8. django单表操作 增 删 改 查

    一.实现:增.删.改.查 1.获取所有数据显示在页面上 model.Classes.object.all(),拿到数据后,渲染给前端;前端通过for循环的方式,取出数据. 目的:通过classes(班 ...

  9. C语言,单链表操作(增删改查)(version 0.1)

    这天要面试,提前把链表操作重新写了一遍.备份一下,以备不时之需. 希望有人能看到这篇代码,并指正. // File Name : list.h #include "stdafx.h" ...

随机推荐

  1. Linux lsattr命令详解

    Linux lsattr命令 Linux lsattr命令用于显示文件属性. 用chattr执行改变文件或目录的属性,可执行lsattr指令查询其属性 用法: lsattr [-adlRvV][文件或 ...

  2. Qt 中的事件处理(一)

    1.图形界面应用程序的消息处理模型 特点: 基于操作系统才能运行 GUI应用程序提供的功能必须由用户触发 用户操作界面时操作系统是第一个感知的 系统内核的消息通过事件处理转变成QT的信号 2. Qt中 ...

  3. CSS:绝对定位布局案例 position布局实例

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  4. RedHat6.5安装单机flume1.6

    版本号: RedHat6.5   JDK1.8   apache-flume-1.6.0 1.apache-flume-1.6.0-bin.tar.gz 下载 官网下载地址:http://archiv ...

  5. Linux之chown

    命令功能: chown将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID:组可以是组名或者组ID:文件是以空格分开的要改变权限的文件列表,支持通配符.系统管理员经常使用chown命令, ...

  6. Thinkphp 缓存和静态缓存局部缓存设置

    1.S方法缓存设置 if(!$rows = S('indexBlog')){ //*$rows = S('indexBlog') $rows = D('blog')->select(); S(' ...

  7. servet概述

    1定义 Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层. 使用 Servl ...

  8. ghost之后仍然中病毒----与病毒的斗争

    ghost之后仍然中病毒----与病毒的斗争我的电脑系统是XP,从来都没有安装任何杀毒软件,所有的软件都是安装在C盘的,感觉系统卡顿就用Windows一键还原(基于DOS下的ghost)还原一下,一直 ...

  9. Flume的基本概念

    Flume 概念 Flume 最早是Cludera提供的日志收集系统,后贡献给Apache.所以目前是Apache下的项目,Flume支持在日志系统中指定各类数据发送方,用于收集数据. Flume 是 ...

  10. Java-Runoob-高级教程-实例-方法:03. Java 实例 – 汉诺塔算法-un

    ylbtech-Java-Runoob-高级教程-实例-方法:03. Java 实例 – 汉诺塔算法 1.返回顶部 1. Java 实例 - 汉诺塔算法  Java 实例 汉诺塔(又称河内塔)问题是源 ...