小demo使用----

1.pycharm-2019.2

2.python-3.7.2

3.mysql-5.7.25

4.django-2.2.4

使用过程中的一些注意事项和出现的常见错误的解决地址

前端实例实现效果

添加书籍

查看书籍

删除书籍

编辑书籍

部分代码:

部分设置,以及文件分布

数据库提前建好的情况下,建表格

  1. from django.db import models
  2.  
  3. # Create your models here.
  4.  
  5. class Book(models.Model):
  6. id = models.AutoField(primary_key=True)
  7. title = models.CharField(max_length=32)
  8. pub_date = models.DateField()
  9. price = models.DecimalField(max_digits=8, decimal_places=2)
  10. publish = models.CharField(max_length=32)

models.py

控制器

  1. """bookms URL Configuration
  2.  
  3. The `urlpatterns` list routes URLs to views. For more information please see:
  4. https://docs.djangoproject.com/en/2.2/topics/http/urls/
  5. Examples:
  6. Function views
  7. 1. Add an import: from my_app import views
  8. 2. Add a URL to urlpatterns: path('', views.home, name='home')
  9. Class-based views
  10. 1. Add an import: from other_app.views import Home
  11. 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
  12. Including another URLconf
  13. 1. Import the include() function: from django.urls import include, path
  14. 2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
  15. """
  16. from django.contrib import admin
  17. from django.urls import path, re_path
  18. from app01 import views
  19.  
  20. urlpatterns = [
  21. path('admin/', admin.site.urls),
  22. path('addbook/', views.addbook),
  23. path('books/', views.books),
  24. re_path(r"books/(\d+)/delete", views.delbook),
  25. re_path(r"books/(\d+)/change", views.changebook),
  26. ]

urls.py

视图

  1. from django.shortcuts import render, HttpResponse, redirect
  2.  
  3. # Create your views here.
  4.  
  5. from app01.models import Book
  6.  
  7. def addbook(request):
  8. if request.method == "POST":
  9.  
  10. title = request.POST.get("title")
  11. price = request.POST.get("price")
  12. date = request.POST.get("date")
  13. publish = request.POST.get("publish")
  14.  
  15. book_obj = Book.objects.create(title=title, price=price, pub_date=date, publish=publish)
  16. return redirect("/books/")
  17.  
  18. return render(request, "addbook.html")
  19.  
  20. def books(request):
  21. book_list = Book.objects.all()
  22.  
  23. return render(request, "books.html", locals())
  24.  
  25. def delbook(request, id):
  26.  
  27. Book.objects.filter(id=id).delete()
  28.  
  29. return redirect("/books/")
  30.  
  31. def changebook(request, id):
  32. book_obj = Book.objects.filter(id=id).first()
  33.  
  34. if request.method == "POST":
  35. title = request.POST.get("title")
  36. price = request.POST.get("price")
  37. date = request.POST.get("date")
  38. publish = request.POST.get("publish")
  39. Book.objects.filter(id=id).update(title=title, price=price, pub_date=date, publish=publish)
  40. return redirect("/books/")
  41.  
  42. return render(request, "changebook.html", {'book_obj': book_obj})

views.py

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. <link rel="stylesheet" href="/static/bs/css/bootstrap.css">
  7. <style>
  8. .container{
  9. margin-top: 100px;
  10. }
  11. .btn{
  12. margin-top: 10px;
  13. }
  14. </style>
  15. </head>
  16. <body>
  17.  
  18. <h3>查看书籍</h3>
  19.  
  20. <div class="container">
  21. <div class="row">
  22. <div class="col-md-6 col-md-offset-3">
  23. <a href="/addbook" class="btn btn-primary">添加书籍</a>
  24. <table class="table table-striped table-bordered">
  25. <thead>
  26. <tr>
  27. <th>书籍名称</th>
  28. <th>价格</th>
  29. <th>出版日期</th>
  30. <th>出版社</th>
  31. <th>删除操作</th>
  32. <th>编辑操作</th>
  33. </tr>
  34. </thead>
  35. <tbody>
  36. {% for book in book_list %}
  37. <tr>
  38. <td>{{ book.title }}</td>
  39. <td>{{ book.price }}</td>
  40. <td>{{ book.pub_date|date:'Y-m-d' }}</td>
  41. <td>{{ book.publish }}</td>
  42. <td><a href="/books/{{ book.pk }}/delete" class="btn btn-danger">删除</a></td>
  43. <td><a href="/books/{{ book.pk }}/change" class="btn btn-info">编辑</a></td>
  44. </tr>
  45. {% endfor %}
  46.  
  47. </tbody>
  48. </table>
  49. </div>
  50. </div>
  51. </div>
  52. </body>
  53. </html>

books.html

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. <link rel="stylesheet" href="/static/bs/css/bootstrap.css">
  7. <style>
  8. .container{
  9. margin-top: 100px;
  10. }
  11. .btn{
  12. margin-top: 10px;
  13. }
  14. </style>
  15. </head>
  16. <body>
  17.  
  18. <h3>添加书籍</h3>
  19.  
  20. <div class="container">
  21. <div class="row">
  22. <div class="col-md-6 col-md-offset-3">
  23. <a href="/books" class="btn btn-primary">查看书籍</a>
  24. <form action="" method="post">
  25. {% csrf_token %}
  26. <div>
  27. <label for="">书籍名称</label>
  28. <input type="text" class="form-control" name="title">
  29. </div>
  30. <div>
  31. <label for="">价格</label>
  32. <input type="text" class="form-control" name="price">
  33. </div>
  34. <div>
  35. <label for="">出版日期</label>
  36. <input type="date" class="form-control" name="date">
  37. </div>
  38. <div>
  39. <label for="">出版社</label>
  40. <input type="text" class="form-control" name="publish">
  41. </div>
  42.  
  43. <input type="submit" class="btn btn-success pull-right">
  44. </form>
  45. </div>
  46. </div>
  47. </div>
  48. </body>
  49. </html>

addbook.html

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. <link rel="stylesheet" href="/static/bs/css/bootstrap.css">
  7. <style>
  8. .container{
  9. margin-top: 100px;
  10. }
  11. .btn{
  12. margin-top: 10px;
  13. }
  14. </style>
  15. </head>
  16. <body>
  17.  
  18. <h3>编辑书籍</h3>
  19.  
  20. <div class="container">
  21. <div class="row">
  22. <div class="col-md-6 col-md-offset-3">
  23. <a href="/books" class="btn btn-primary">查看书籍</a>
  24. <form action="" method="post">
  25. {% csrf_token %}
  26. <div>
  27. <label for="">书籍名称</label>
  28. <input type="text" class="form-control" name="title" value="{{ book_obj.title }}">
  29. </div>
  30. <div>
  31. <label for="">价格</label>
  32. <input type="text" class="form-control" name="price" value="{{ book_obj.price }}">
  33. </div>
  34. <div>
  35. <label for="">出版日期</label>
  36. <input type="date" class="form-control" name="date" value="{{ book_obj.pub_date|date:'Y-m-d' }}">
  37. </div>
  38. <div>
  39. <label for="">出版社</label>
  40. <input type="text" class="form-control" name="publish" value="{{ book_obj.publish }}">
  41. </div>
  42.  
  43. <input type="submit" class="btn btn-success pull-right">
  44. </form>
  45. </div>
  46. </div>
  47. </div>
  48. </body>
  49. </html>

changebook.html

demo Django-基础书籍添加删除(单表)的更多相关文章

  1. Django基础(3)----模型层-单表操作,多表创建

    昨日内容回顾: 1. {% include '' %} 2. extend base.html: <html> ..... ..... ..... {% block content%} { ...

  2. mysql 删除单表内多个字段重复的数据

    mysql 删除单表内多个字段重复的数据 DELETE from lot_log_payflow WHERE (pay_no,sub_flow_type) in () s1) AND id ) s2) ...

  3. 65、django之模型层(model)--添加、单表查询、修改基础

    上篇带大家简单做了一下图书表的创建.简单的查看和删除,今天会先简单介绍添加和修改,因为添加和修改与删除一样都很简单,本篇会相对多介绍一点单表查询,大家都知道数据库中查询是最重要的一部分,毕竟无论是修改 ...

  4. django之模型层(model)--添加、单表查询、修改基础

    上篇带大家简单做了一下图书表的创建.简单的查看和删除,今天会先简单介绍添加和修改,因为添加和修改与删除一样都很简单,本篇会相对多介绍一点单表查询,大家都知道数据库中查询是最重要的一部分,毕竟无论是修改 ...

  5. Django之模型层(单表操作)

    一.ORM简介 MVC和MTV框架中包含一个重要部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库. ORM是‘对象-关系- ...

  6. SQLServer学习笔记<>.基础知识,一些基本命令,单表查询(null top用法,with ties附加属性,over开窗函数),排名函数

    Sqlserver基础知识 (1)创建数据库 创建数据库有两种方式,手动创建和编写sql脚本创建,在这里我采用脚本的方式创建一个名称为TSQLFundamentals2008的数据库.脚本如下:   ...

  7. Django之ORM配置与单表操作

    ORM数据库操作流程: 1.    配置数据库(项目同名包中settings.py和__init__.py) 2.    定义类(app包中models.py),执行建表命令(Tools---> ...

  8. Django学习——Django测试环境搭建、单表查询关键字、神奇的双下划线查询(范围查询)、图书管理系统表设计、外键字段操作、跨表查询理论、基于对象的跨表查询、基于双下划线的跨表查询

    Django测试环境搭建 ps: 1.pycharm连接数据库都需要提前下载对应的驱动 2.自带的sqlite3对日期格式数据不敏感 如果后续业务需要使用日期辅助筛选数据那么不推荐使用sqlite3 ...

  9. Django框架(九)—— 单表增删改查,在Python脚本中调用Django环境

    目录 单表增删改查,在Python脚本中调用Django环境 一.数据库连接配置 二.orm创建表和字段 三.单表增删改查 1.增加数据 2.删除数据 3.修改数据 4.查询数据 四.在Python脚 ...

随机推荐

  1. 林大妈的JavaScript进阶知识(二):JS异步行为

    JavaScript 是单线程执行的 JavaScript运行在浏览器中.浏览器是多线程的,但只分配了其中一条给JavaScript,作为它的主线程.对于编码者来说,JavaScript是单线程的.因 ...

  2. python练习——第1题

    原GitHub地址:https://github.com/Yixiaohan/show-me-the-code 题目:做为 Apple Store App 独立开发者,你要搞限时促销,为你的应用生成激 ...

  3. ssh连接超时的问题

    vi /etc/ssh/sshd_config ClientAliveInterval ClientAliveCountMax # 注: # ClientAliveInterval选项定义了每隔多少秒 ...

  4. debian wget 报ERROR: The certificate of ‘xxx’ is not trusted.

    # wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tar.xz --2019-01-11 15:04:41-- https://w ...

  5. centos6.x下使用xinetd管理rsync服务

    系统环境说明:centos6.x,centos7.x下rsync直接可由systemd管理(无需使用xinetd). [root@meinv01 ~]# rpm -qa|grep xinetd [ro ...

  6. 珠峰-6-koa-express

    ####  这里写await和return 的区别是, await后边还可以写代码,而return 不会. ##### koa这里需要注意 这样子方法1比起方法2,少写n个url类似这样的key.

  7. 【转】Redis内部数据结构详解——ziplist

    本文是<Redis内部数据结构详解>系列的第四篇.在本文中,我们首先介绍一个新的Redis内部数据结构--ziplist,然后在文章后半部分我们会讨论一下在robj, dict和zipli ...

  8. 西门子S7comm协议解析 —— 利用Wireshark对报文逐字节进行解析详细解析S7comm所含功能码以及UserData功能

    又一次成为懒蛋了,标题就这么改了改又是一篇新文章. 网上也有很多S7comm协议的解析,但还是如同我上一篇一样我只是做报文的解析对于S7comm的原理并进行阐述. 有些地方有错误的地方尽请大家指出,共 ...

  9. electron 安装过程出现未成功地运行

    问题 正文 产生问题得原因? 是因为之前安装了该程序,但是卸载的时候可能人为的直接删除了卸载程序. 这时候安装包会触发找到注册表中,该appid相同地址的卸载程序位置,然后进行调用,如果没有的话,只会 ...

  10. jSon和Ajax登录功能,ajax数据交互案例

    ajax实例,检测用户与注册 检测用户名是否被占用: 在用户填写完用户名之后,ajax会异步向服务器发送请求,判断用户名是否存在 首先写好静态页面: index.html <!DOCTYPE h ...