首页
学习
活动
专区
圈层
工具
发布

Django项目开发(二)

上次搭建的django环境,这次来真正的实战开发,项目是比较老的图书管理系统,对于django来说只是一个Hello,world的项目,django的世界比你想象的还要大。

需求分析

任何的项目都要从需求分析入手

  • 对于用户来说,要发布图书
  • 对于用户来说,也可以删除图书
  • 对于用户来说,要有首页面

需求比较简单,关键是如何实现简单的需求

数据库建立是关键

数据库:高效的存储和处理数据的介质(介质主要是两种:磁盘和内存)。

对于企业,数据就是金钱。如果前期不做好数据库,后期来不断地添加需求,修改数据库,简直就是要命。千万不要删库跑路,删库已经进入了法律

这次上次的路径文件

上次创建好了app,搭建好了数据库

创建数据库

因为项目比较简单,只需要书的作者和名字就可以了

from django.db import models导入django内置的数据库,创建数据库的名字叫app_book_manager,就是front_book_manager

app下的model.py

然后就是数据库的迁移python manage.py makemigrationspython manage.py migrate两个语句

同时会生成相对的py迁移文件

具体内容就是用python执行SQL语句来创建数据库

0001_initial.py

通过Navicat可以看到刚创建的数据库

后端View视图

最开始的View.py

编写urls

urls.py

前端页面编写

对于编写前端,必须知道模板变量和模板标签

  • 模板变量 {{ }}
  • 模板标签 {% %}

以及最重要的继承base模板 {% extends 'base.html' %}

任何前端代码编写第一就是先写base.html,然后其他html继承

base.html 的源码

代码语言:javascript
代码运行次数:0
复制
{% 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>
代码解析
  • {% load static %} 就是模板标签 来引用static文件夹的静态资源的

在setting.py中会有STATIC_URL = '/static/' ,这个是项目自动生成的,所以你只需要新建一个文件夹叫static,放一些CSS,js,image资源

  • {% static 'front/base.css' %} 就是加载css样式
  • {% url 'add_book' %} 就是跳转的url链接
  • {% block content %}{% endblock %} 其他html可以在这里放它自己的内容

CSS

代码语言:javascript
代码运行次数:0
复制
# 清除内外变局
*{
    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的页面编写

代码语言:javascript
代码运行次数:0
复制
{% 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 }} 书的作者

上次都是模板变量的基础知识

最后,祝有所学习,有所成长

下一篇
举报
领券