上次搭建的django环境,这次来真正的实战开发,项目是比较老的图书管理系统,对于django来说只是一个Hello,world的项目,django的世界比你想象的还要大。
任何的项目都要从需求分析入手
需求比较简单,关键是如何实现简单的需求
数据库:高效的存储和处理数据的介质(介质主要是两种:磁盘和内存)。
对于企业,数据就是金钱。如果前期不做好数据库,后期来不断地添加需求,修改数据库,简直就是要命。千万不要删库跑路,删库已经进入了法律
这次上次的路径文件
上次创建好了app,搭建好了数据库
因为项目比较简单,只需要书的作者和名字就可以了
from django.db import models
导入django内置的数据库,创建数据库的名字叫app_book_manager
,就是front_book_manager
app下的model.py
然后就是数据库的迁移python manage.py makemigrations
和python manage.py migrate
两个语句
同时会生成相对的py迁移文件
具体内容就是用python执行SQL语句来创建数据库
0001_initial.py
通过Navicat可以看到刚创建的数据库
最开始的View.py
urls.py
对于编写前端,必须知道模板变量和模板标签
{{ }}
{% %}
以及最重要的继承base模板 {% extends 'base.html' %}
base.html 的源码
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>图书管理系统</title>
<link rel="stylesheet" href="{% static 'front/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>
在setting.py中会有STATIC_URL = '/static/'
,这个是项目自动生成的,所以你只需要新建一个文件夹叫static,放一些CSS,js,image资源
{% static 'front/base.css' %}
就是加载css样式{% url 'add_book' %}
就是跳转的url链接{% block content %}{% endblock %}
其他html可以在这里放它自己的内容CSS
# 清除内外变局
*{
margin: 0;
padding: 0;
}
# nav 大盒子设置背景黑色 overflow:hidden的意思就是超出部分隐藏,这样可以自由伸缩
.nav{
background: #3a3a3a;
height: 65px;
overflow: hidden;
}
# 左浮动
.nav li{
float: left;
list-style: none;
margin: 0 20px;
line-height: 65px;
}
# a 没有下划线
.nav li a{
color: #fff;
text-decoration: none;
}
# 点击变手指
.nav li a:hover{
color: lightblue;
}
上面的都是前期的准备,目的就是index.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' %}
继承base.html{% block content %}{% endblock %}
写自己的内容{% for book in books %}
books 是上面view传递的books参数forloop.counter
循环次数{% url 'book_detail' book_id=book.0 %}
book_detail是url的名字,book_id 是传递url的参数,{{ book.1 }}
书的名字{{ book.2 }}
书的作者上次都是模板变量的基础知识
最后,祝有所学习,有所成长