1 分组查询
-把同一类归为一组,然后使用聚合函数操作
-如果是多表,把连个表连起来,再分组,再聚合
-取的字段必须是分组字段或者聚合函数的字段
-总结:
-annotate(聚合函数)
-values在前,表示分组字段
-values在后,表示取字段
-filter在前,表示where条件
-filter在后,表示having条件
2 wsgi,uWSGI,uwsgi,cgi,fastcgi
3 前后端开发模式
-动态网站和静态网站
-前后端分离:后端只写后端,返回json格式字符串,vue,react。。
-前后端混合开发:模板,dtl(模板语法),jsp,php
4 图书管理系统
-后端是django+mysql+bootstrap (主机管理系统,人事管理系统,文档分享平台)
-图书增删查改
-增,删,查
-出版社的增删查改
-作者的增删查改
1 图书管理系统图书修改
1.1 后端views
def update_book(request):
if request.method=='GET':
1.2 路由
url(r'^update_book/$', views.update_book),
1.3 前端模板
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>修改图书</title>
<link rel="stylesheet" href="/static/bootstrap-3.3.7-dist/css/bootstrap.min.css">
<script src="/static/jquery-3.3.1.js"></script>
<script src="/static/bootstrap-3.3.7-dist/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container-fluid">
<div class="row">
<div class="col-md-6 col-md-offset-3">
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title">修改新增</h3>
</div>
<div class="panel-body">
<form action="/update_book/?id={{ book.id }}" method="post">
<input type="hidden" name="id" value="{{ book.id }}">
<div class="form-group">
<p>书名:<input type="text" name="name" value="{{ book.name }}" class="form-control"></p>
</div>
<div class="form-group">
<p>价格:<input type="text" name="price" value="{{ book.price }}" class="form-control"></p>
</div>
<div class="form-group">
<p>出版日期:<input type="date" name="pub_date" value="{{ book.pub_date|date:'Y-m-d' }}"
class="form-control"></p>
</div>
<div class="form-group">
<p>作者:
<select name="authors" class="form-control" multiple>
{% for author in authors %}
{% if author in book.authors.all %}
<option value="{{ author.id }}" selected>{{ author.name }}</option>