大家好,这是皮爷给大家带来的最新的学习Python能干啥?之Django教程,从零开始,到最后成功部署上线的项目。这一节,来点硬货内容。
上一节,我们开发了文章应用,创建了Post,Category还有Tag这三个类。这一节,我们就要在CMS页面里面,来实现Category还有Tag的管理功能。
重构Dashboard
在第12讲,我们重构了首页页面,这一节,我们的重点是CMS的Dashboard页面,所以,我们需要将Dashboard重构。重构的思路还是和之前Index.html重构思路一样,即通过使用extend,block还有include,来讲整个页面拆分成几个模块,每一个页面都是通过模块模块之间的组合,所以,我们要在CMS下面创建一个base文件夹,重构完之后,整个目录结构应该是这个样子的:
这里base目录下,有三个东西,dashboard_base
则是dashboard最基本的,navbar
则是顶部的Navbar导航栏,sidebar
则是左侧的Sidebar菜单列。
这个dashboard_base
文件结构就成了下面这样:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Peekpa | Dashboard | {% block title %}
{% endblock %}</title>
<!-- script路径,略 -->
{% block head %}
{% endblock %}
</head>
<body class="hold-transition sidebar-mini layout-fixed">
<div class="wrapper">
<!-- Navbar -->
{% include 'cms/base/navbar.html' %}
<!-- Sidebar-->
{% include 'cms/base/sidebar.html' %}
<!-- Content Wrapper. Contains page content -->
<div class="content-wrapper">
{% block main %}
{% endblock %}
</div>
</div>
<!-- script路径,略 -->
</body>
</html>
可以看到这里我们使用了三个blcok,分别是title,head还有main。这一点和首页是一样的。同时,还用了两个include标签,分别将navbar还有sidebar引入进来。
我们把原来的Dashboard.html抽象到了home.html文件中:
{% extends 'cms/base/dashboard_base.html' %}
{% block title %}
Home
{% endblock %}
{% block head %}
{% endblock %}
{% block main %}
<!-- Main content -->
<section class="content">
<div class="container-fluid">
<div class="row d-flex justify-content-around pt-4 mb-4">
<p class="h3">《用Django全栈开发——14. CMS中添加Category和Tag管理》</p>
<p class="h5">公众号『皮爷撸码』,连载更新此系统的开发教程,敬请关注</p>
</div>
<div class="row d-flex justify-content-around">
<img class="img-thumbnail" src="https://www.peekpa.tech/asserts/img/qrcode.jpg" alt="">
</div>
</div>
</section>
{% endblock %}
可以看到,这里首先使用extend来继承dashboard_base
文件,然后填充里面的block内容。最后,我们继承完成的首页,就长这个样子:
Category开发
我们开发Category的思路也很简单,就只有两个页面:管理页面还有发布页面。
管理页面就是一张表格,里面显示的Category的基本信息;发布页面则是要发布Category。所以,我们创建Category目录,并在目录下创建两个文件,manage.html
和publish.html
文件,分别对应的管理和发布。当然,这两个文件的开发思路和home是一样的,都需要继承dashboard_base
文件。
所以,我们先把manage.html
和publish.html
两个文件的结构先创建起来:
<!--manage.html-->
{% extends 'cms/base/dashboard_base.html' %}
{% block head %}
{% endblock %}
{% block title %}
Category Management
{% endblock %}
{% block main %}
<section class="content">
<div class="container-fluid pt-4">
<div class="row">
<div class="col-sm-12">
<div class="card">
<div class="card-body">
<div class="row p-2 d-flex justify-content-between">
<p class="h3">Categories</p>
<div class="float-right">
<a class="btn btn-primary text-right" href=""><i class="mr-2 fas fa-plus"></i>Add</a>
</div>
</div>
<table class="table table-bordered table-hover">