上次完成了首页的,还有3个简单的小需要还没有完善

  • 添加书籍的需求
  • 删除书籍的需求
  • 书籍的详细页
首先介绍下 MVC

MVC简介

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。


  • Model(模型)表示应用程序核心(比如数据库记录列表)。
  • View(视图)显示数据(数据库记录)。
  • Controller(控制器)处理输入(写入数据库记录)。

Django框架遵循MVC设计,并且有一个专有名词:MVT

  • M全拼为Model,与MVC中的M功能相同,负责和数据库交互,进行数据处理。
  • V全拼为View,与MVC中的C功能相同,接收请求,进行业务处理,返回应答。
  • T全拼为Template,与MVC中的V功能相同,负责封装构造要返回的html。

添加书籍

任何开发都是先编写后端,在配置路由,最后渲染前端页面

从View.py开始

添加书籍的本身就是一个提交的过程,所以是POST请求,不是get请求
from django.shortcuts import render,redirect,reversefrom django.db import connection

def get_corsor():    # 创建游标    return connection.cursor()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_corsor()        cursor.execute("insert into front_book_manager(id,name,author) values(null,'%s','%s')" % (name,author))        # redirect 重新定向 reverse通过已命名的URL进行渲染        return redirect(reverse('index'))
代码解析
  • 一开始请求是get请求,来到了add_book.html 页面中
  • 因为提交是post请求,将数据写进数据库,然后在从数据库拿到数据,重定向到首页,刚刚添加的图书就可以显示

在urls.py配置路由

path('add_book/', views.add_book,name='add_book'),

最后就是前端add_book.html 页面的编写

{% 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 %}

在前端编写一个表单不是什么难事,注意以下几点

  • input标签必须带上name属性,不然提交不了
  • method="post" 表明是post请求,虽然是form默认post请求。

效果如下


书籍的详细页

现在要在首页点击书名跳转书籍的详细页

分析接口

接口就是前后端约定的api,就是url请求需要啥参数

book_detail/<int:book_id>/这是确保book_id 是int类型


现在规定了book_detail/book_id 是urls

view.py
def book_detail(request,book_id):    # 上面定义了创建游标了    cursor = get_corsor()    # 根据book_id 筛选    cursor.execute("select id,name,author from front_book_manager where id=%s" % book_id)    # 得到返回值book是一个元组    book = cursor.fetchone()    return render(request,'book_detail.html',context={"book":book})

在urls.py配置路由

path('book_detail/<int:book_id>/', views.book_detail,name='book_detail')

book_detail.html 页面的编写

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

效果如下


删除书籍

现在进去了书籍的详细页,就要删除图书

接口是delete_book/

View.py 代码编写

def delete_book(request):    if request.method == 'POST':        # 上面post请求拿到book_id        book_id = request.POST.get('book_id')        cursor = get_corsor()        cursor.execute("delete from front_book_manager where id=%s" % book_id)        return redirect(reverse('index'))    else:        raise RuntimeError("删除图书的method错误!")

urls.py配置路由

path('delete_book/',views.delete_book,name='delete_book')

效果如下


总结

至此,简单不能再简单的项目基本完成,可以说是django的helloWorld,进门级别。

作为python必须web框架的Django,它的功能强大,内容全面,我们学习Django,其实就是学习一个软件,要理解它的基本原理,把握它整体框架,牢记一些基本规则,剩下的就是不断深入细节,然后熟能生巧、经验多少的问题了

Django 项目开发(三)相关推荐

  1. python django开发工具_利用pyCharm编辑器创建Django项目开发环境-python开发工具第一篇...

    [前置说明] 1.django环境与python对应关系: Django version Python versions 1.11 2.7, 3.4, 3.5, 3.6, 3.7 (added in ...

  2. pbp 读取 mysql数据_pbp: Django项目开发,个人博客网站类。

    pbp 项目介绍 首个Django项目开发,个人博客网站类. 框架模型 Django 运行平台 Linux 安装部署 1.安装Python3环境 CentOS 7 curl -o /etc/yum.r ...

  3. 送书 | 《Django项目开发实战》

    又到了周三了,说实话,本来这期想鸽的,上海这边的疫情太严重了,前几期上海这边中奖的粉丝都没办法收货,只能等解封后再安排了.在这里和大家道个歉,希望大家谅解. 最后希望在上海的小伙伴们早日渡过难关,像这 ...

  4. Django项目开发——002架构梳理

    python三个开发框架: django tornado flask MVC #开源高级web开发框架,使用python #快速开发: ORM 构建数据库,方法简洁. #内置应用:admin,auth ...

  5. Django项目开发——001如何学习django

    参考地址: https://code.ziqiangxuetang.com/django/django-tutorial.html https://www.django.cn/article/show ...

  6. python--Django 01 安装以及初识Django项目开发

    思考:点击 1 Django安装 1.1 Django版本介绍 安装版本:注意安装 LTS版(Long Team Support) Django包来源:因为连接国外服务器下载经常会超时(timeout ...

  7. Django项目开发案例教程【可在此基础上进行开发】

    CSDN下载链接:https://download.csdn.net/download/qq_45021180/86737985 飞书下载 : https://qbq4a8utjq.feishu.cn ...

  8. Django项目开发:图书后台管理系统

    大家好,我是梓栋,今天我给大家分享一个Django入门级开发项目-图书后台管理系统,想要源码资料的小伙伴,请关注微信公众号:,回复 "009"获取! 一.项目介绍 1.管理员登录注 ...

  9. Django项目开发纪要

    从今年7月开始开始做实验室的一个合作项目,项目要求主要是做一个工厂里面的试制评审系统.主要核心是将工厂产品的试制评审过程进行电子化,做成集成的系统.现在这个项目基本完成,把项目开发过程中的一些问题记录 ...

最新文章

  1. SBB-2016-石油污染土壤微生物群落构建与生物多样性研究
  2. 跟无闻学习GO Web 编程(四) -- bee 工具使用
  3. 美国不要求计算机背景的学校,美国哪些院校计算机专业不需要CS背景
  4. STC89C52 STC89LE52 NRF24L01无线 教程 (一)
  5. [pytorch、学习] - 5.8 网络中的网络(NiN)
  6. 洛谷-图的遍历-P2661-信息传递
  7. Springboot系列之Shiro、JWT、Redis 进行认证鉴权
  8. 手把手教你搭建Jenkins+Jmeter+Ant自动化集成环境
  9. Javascript技术之详尽解析event对象
  10. ApacheHttpServer出现启动报错:the requested operation has failed解决办法
  11. MIT 18.02 多变量微积分笔记总目录
  12. 博取仪器3D产品配置
  13. 计算机组成CPU最佳配置,计算机组成原理--CPU
  14. R 编程中的 LOOCV(留一法交叉验证)
  15. 计算机 优质课教案,计算机优质课教案.doc
  16. 基于python的汽车信息爬取与可视化分析系统
  17. fl2440串口编程
  18. Java-List数组排序的使用—Collections.sort()
  19. 神经注意力蒸馏NAD
  20. 并联串联混合的电压和电流_105节,串联电路和并联电路

热门文章

  1. 启明云端分享|乐鑫 ESP-NOW 无线通信方案主要特点、应用以及NOW一对一模式下通信速率
  2. python处理数据的包_在Python中利用Into包整洁地进行数据迁移的教程
  3. vuex页面数据丢失_使用vuex解决刷新页面state数据消失的问题记录
  4. mysql+不锁表添加字段_MySQL5.6在线DDL不锁表(在线添加字段)
  5. mfc 子窗体任何消息都不触发_winform让窗体一直显示在桌面上以及FindWindow
  6. 【经验总结】VS2010下建立MFC程序
  7. Java 并发:Executor ExecutorService ThreadPoolExecutor
  8. mysql获取用户名_mysql-LEFT JOIN 3列获取用户名
  9. 线性表 c++语言代码,线性表C++的两种实现(顺序表示、单链表)
  10. 文档怎么添加云服务器,如何添加云服务器地址