上次完成了首页的,还有3个简单的小需要还没有完善
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。
任何开发都是先编写后端,在配置路由,最后渲染前端页面
从View.py开始
from django.shortcuts import render,redirect,reverse
from 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'))
在urls.py配置路由
path('add_book/', views.add_book,name='add_book'),
{% 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 %}
在前端编写一个表单不是什么难事,注意以下几点
效果如下
现在要在首页点击书名跳转书籍的详细页
分析接口
book_detail/<int:book_id>/这是确保book_id 是int类型
现在规定了book_detail/book_id 是urls
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,其实就是学习一个软件,要理解它的基本原理,把握它整体框架,牢记一些基本规则,剩下的就是不断深入细节,然后熟能生巧、经验多少的问题了。