首页,其他页面全部继承首页的上半部分

点击发布图书页面

首页点击书名,跳转到图书信息界面,该界面可删除图书

项目结构

#views.py
from django.shortcuts import render,redirect,reverse
from django.db import connection
def get_cursor():
return connection.cursor() def index(request): #首页
cursor=get_cursor()
cursor.execute("select * from book")
books=cursor.fetchall()
return render(request,'index.html',context={"books":books}) def add_book(request):#发布图书
if request.method == 'GET':
return render(request,'add_book.html')
else:
name = request.POST.get('name')
author = request.POST.get('author')
cursor=get_cursor()
cursor.execute("insert into book values(null,'%s','%s')"%(name,author))
return redirect(reverse('index'))#发布图书完成后跳转到首页 def book_detail(request,book_id):
cursor=get_cursor()
cursor.execute("select * from book where id=%s"%book_id)
book=cursor.fetchone()
return render(request,'book_detail.html',context={"book":book}) def delete_book(request):#删除图书
if request.method=='POST':
book_id=request.POST.get('book_id')
cursor=get_cursor()
cursor.execute("delete from book where id=%s"%book_id)
return redirect(reverse('index'))#删除图书后跳转到首页
else:
raise RuntimeError("删除图书的method错误!")
urls.pyfrom front import views
urlpatterns = [
path('', views.index,name='index'),
path('add_book/',views.add_book,name='add_book'),
path('book_detail/<int:book_id>',views.book_detail,name='book_detail'),
path('delete_book',views.delete_book,name='delete_book')
]

项目静态文件index.css

*{margin:;
padding:;
}
.nav {
background: #3a3a3a;
height: 65px;
overflow: hidden
}
.nav li{
float:left;
list-style: none;
margin: 0 20px;
line-height: 65px;
}
.nav li a{
color: #fff;
text-decoration: none
}

模板html,其他模板均继承这个模板

{% load  static %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>首页</title>
<link rel="stylesheet" href="{% static 'base.css' %}">
</head>
<body>
<nav>
<ul class="nav">
<li><a href="/">首页</a></li>
<li><a href="{% url 'add_book' %}">发布图书</a></li>
</ul>
</nav>
{% block content %} {% endblock %}
</body>
</html>

首页模板

{% extends 'base.html' %}
{% block content %}
<table>
<thead>
<tr>
<th>序号</th>
<th>书名</th>
<th>作者</th>
</tr>
</thead>
<tbody>
{% for book in books %}
<tr>
<td>{{ forloop.counter }}</td>
<td><a href="{% url 'book_detail' book_id=book.0 %}">{{ book.1 }}</a></td>
<td>{{ book.2 }}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endblock %}

发布图书模板

{% extends 'base.html' %}
{% block content %}
<form action="" method="post">
<table>
<tbody>
<tr>
<td>书名:</td>
<td><input type="text" name='name'></td>
</tr>
<tr>
<td>作者:</td>
<td><input type="text" name='author'></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value='提交'></td>
</tr>
</tbody>
</table>
</form>
{% endblock %}

图书详情模板,该模板可删除图书

{% extends 'base.html' %}
{% block content %}
<p>书名:{{ book.1 }}</p>
<p>作者:{{ book.2 }}</p>
<form action="{% url 'delete_book' %}" method="post">
<input type="hidden" name="book_id" value="{{ book.0 }}">
<input type="submit" value="删除图书">
</form>
{% endblock %}

django图书管理系统实例的更多相关文章

  1. Django——图书管理系统

    基于Django的图书管理系统 1.主体功能 1.列出图书列表.出版社列表.作者列表 2.点击作者,会列出其出版的图书列表 3.点击出版社,会列出旗下图书列表 4.可以创建.修改.删除 图书.作者.出 ...

  2. Django(图书管理系统1)

    day63 内容回顾     1. 单表的增删改查         1. 删和改             1. GET请求 URL传值                 1. 格式            ...

  3. Django图书管理系统(前端对数据库的增删改查)

    图书管理系统 出版社的管理 源码位置:https://gitee.com/machangwei-8/learning_materials/tree/master/%E9%A1%B9%E7%9B%AE/ ...

  4. django 图书管理系统

    一.图书管理系统 单表的增删改查 1.创建项目 2.注释掉中间件 就可以提交post 请求 3.配置静态文件 并手动创建static 文件夹存放静态文件  二.具体的数据库配置 1.创建数据库  2. ...

  5. Django图书管理系统(前端对有外键的数据表增删改查)

    图书管理 书籍管理 book name 项目源码位置:https://gitee.com/machangwei-8/learning_materials/tree/master/%E9%A1%B9%E ...

  6. Django(图书管理系统2)

    day64 内容回顾     1. ORM外键操作         图书表和出版社表  多对一 的关系              # 书     class Book(models.Model):   ...

  7. Django图书管理系统(单表操作)

    以下内容需要掌握: Python3 以及前端:HTML,CSS,jQuery,BootStrap,Django,JavaScript 开启Django新项目: 1,settings.py 数据库选择: ...

  8. Django练习——图书管理系统

    Django图书管理系统 创建一个项目 1. django-admin startproject 图书管理 2. cmd 命令终端下创建一个app python manage.py startapp ...

  9. Django学习——图书管理系统图书修改、orm常用和非常用字段(了解)、 orm字段参数(了解)、字段关系(了解)、手动创建第三张表、Meta元信息、原生SQL、Django与ajax(入门)

    1 图书管理系统图书修改 1.1 views 修改图书获取id的两种方案 1 <input type="hidden" name="id" value=& ...

随机推荐

  1. 配置Tomcat启用Https安全协议的访问

    1.首先使用keytool工具生成证书文件名为cnkey,然后拷贝此证书即文件到tomcat安装目录conf下(放到哪里都行,主要在下面配置中指明路径就好了.这里我就放这了conf) 2.配置serv ...

  2. node代码打包为 exe文件---端口进程关闭demo

    最近用到 java,用tomcat起的服务,经常服务关了,对应的进程还在跑,导致再次启动服务失败,需要手动关闭进程. 使用 dos命令虽然只有两行,总是输,也很烦. netstat -ano | fi ...

  3. maven 详解二

    转自 http://www.cnblogs.com/whgk/p/7121336.html 前一节我们明白了maven是个什么玩意,这一节就来讲讲他的一个重要的应用场景,也就是通过maven将一个ss ...

  4. Python list 和 tuple 使用小记

    list和tuple是Python内置的有序集合,一个可变,一个不可变.根据需要来选择使用它们. 1.内置数据类型,列表List >>> appleVersion = ['apple ...

  5. cocos2d JS 设置字幕循环滚动(背景图滚动亦可)

    var dong = ccs.load("res/Login.json"); this.addChild(dong.node); this.cShamNotice = ccui.h ...

  6. Visual Studio 2015 开发Android Cordova出现unsupported major minor version 52.0错误的解决方法

    JDK版本的问题,需要JDK1.8版本,安装!VS2015做如下设置, 工具->选项->用于Apache Cordoba的工具->环境变量替代->JAVA_HOME设为1.8:

  7. PHP 函数 ignore_user_abort()详解笔记

     定义和用法 ignore_user_abort()函数设置与客户机断开是否会终止脚本的执行  语法 ignore_user_abort(setting) 参数 描述 setting 可选.如果设置为 ...

  8. git add -A -u . 的区别

    git add -u:将文件的修改.文件的删除,添加到暂存区. git add .:将文件的修改,文件的新建,添加到暂存区. git add -A:将文件的修改,文件的删除,文件的新建,添加到暂存区.

  9. VScode编辑器个性化配置

    一.设置方法 “文件” - > “首选项” -> "设置" 二.字体大小和缩进 "editor.tabSize": 2, "editor. ...

  10. python入门第一篇

    python里面 单行注释用:#被注释内容 多行注释用:"""被注释内容""" 要想py2.7和py3.5都能运行,必须在文件头部加: #/ ...