django图书管理系统实例
首页,其他页面全部继承首页的上半部分

点击发布图书页面

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

项目结构

#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图书管理系统实例的更多相关文章
- Django——图书管理系统
基于Django的图书管理系统 1.主体功能 1.列出图书列表.出版社列表.作者列表 2.点击作者,会列出其出版的图书列表 3.点击出版社,会列出旗下图书列表 4.可以创建.修改.删除 图书.作者.出 ...
- Django(图书管理系统1)
day63 内容回顾 1. 单表的增删改查 1. 删和改 1. GET请求 URL传值 1. 格式 ...
- Django图书管理系统(前端对数据库的增删改查)
图书管理系统 出版社的管理 源码位置:https://gitee.com/machangwei-8/learning_materials/tree/master/%E9%A1%B9%E7%9B%AE/ ...
- django 图书管理系统
一.图书管理系统 单表的增删改查 1.创建项目 2.注释掉中间件 就可以提交post 请求 3.配置静态文件 并手动创建static 文件夹存放静态文件 二.具体的数据库配置 1.创建数据库 2. ...
- Django图书管理系统(前端对有外键的数据表增删改查)
图书管理 书籍管理 book name 项目源码位置:https://gitee.com/machangwei-8/learning_materials/tree/master/%E9%A1%B9%E ...
- Django(图书管理系统2)
day64 内容回顾 1. ORM外键操作 图书表和出版社表 多对一 的关系 # 书 class Book(models.Model): ...
- Django图书管理系统(单表操作)
以下内容需要掌握: Python3 以及前端:HTML,CSS,jQuery,BootStrap,Django,JavaScript 开启Django新项目: 1,settings.py 数据库选择: ...
- Django练习——图书管理系统
Django图书管理系统 创建一个项目 1. django-admin startproject 图书管理 2. cmd 命令终端下创建一个app python manage.py startapp ...
- Django学习——图书管理系统图书修改、orm常用和非常用字段(了解)、 orm字段参数(了解)、字段关系(了解)、手动创建第三张表、Meta元信息、原生SQL、Django与ajax(入门)
1 图书管理系统图书修改 1.1 views 修改图书获取id的两种方案 1 <input type="hidden" name="id" value=& ...
随机推荐
- Case when then esle end
Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex ' THEN '男' ' THEN '女' ELSE '其他' END --Case搜索函数 ' T ...
- Dockerfile详解(三)
1.概述 创建Docker镜像的方式有三种 docker commit命令:由容器生成镜像: Dockerfile文件+docker build命令: 从本地文件系统导入:OpenVZ的模板. 关于这 ...
- java开发前的配置
JAVA语言是1995年由Sun公司退出的一门高级编程语言,在2009年4月20被ORACLE公司收购 看看java体系图
- Hibernate框架第二天
### Hibernate的持久化类 ### ---------- **什么是持久化类** 1. 持久化类:就是一个Java类(咱们编写的JavaBean),这个Java类与表建立了映射关系就可以成为 ...
- C\C++程序结束另外的进程
WinExec("taskkill /f /im center_flextrbo.exe",SW_HIDE);
- c#之字符串,列表,接口,队列,栈,多态
1.字符串的用法 using System; using System.Collections.Generic; using System.Linq; using System.Text; using ...
- div上下左右居中方法
方法一:在浏览器中只有一个div的情况 { position:fixed; position:fixed; ; ; ; ; margin:auto; } 方法一 方法二:一个父元素div和一个已知宽度 ...
- Springboot整合Mybatis 之分页插件使用
1: 引入jar包 <!-- 引入MyBatis分页插件--> <dependency> <groupId>com.github.pagehelper</gr ...
- [17]Windows的启动过程
一.内核的引导 在intel x86系统上,windows操作系统获得控制首先从硬盘的主引导记录(MBR,Master Boot Record)开始,windows setup程序在安装windows ...
- 手动创建mfc工程(留存方便复制)
案例一. #include <afxwin.h> class CMyWnd : public CWnd { //DECLARE_DYNCREATE(CMyWnd) public: CMyW ...