前言:本文是学习网易微专业的《python全栈工程师 - Django快速建站》课程的笔记,欢迎学习交流。同时感谢老师们的精彩传授!
一、课程目标
- 了解
MTV
模式 - 重新设置项目的模板目录
二、详情解读
2.1.MTV
模式
2.1.1. MVC
模式
- 网站开发中,普遍遵循
MVC
模式:1978
年Trygve Reenskaug
提出,目的是实现一种动态的程序设计,使后续结程序的修改和扩展简化,并使程序某一部分的重复利用称为可能。
M:Model
,代表数据存取层
V:View
,系统中显示什么和怎么显示
C:Controller
,根据用户输入和需要访问的模型
2.1.2.MTV
模式
MTV
模式是以Django
为框架的网站模式。
M:Model
,数据存取层
V:Template
,表现层
V:View
,业务逻辑层
2.1.3.请求响应流程
2.2.重新规划项目结构
2.2.1.自定义模板位置
- 目的:模板目录位置不在应用内部,便于统一维护模板
- 编辑
./mysite/settings.py
,设置TEMPLATES
的值。
修改myproject/mysite/settings.py
文件中的TEMPLATES
:
.
.
.
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
# 新增下面这一行
'DIRS': [os.path.join(BASE_DIR, 'templates')],
# 下面这里改为 False
'APP_DIRS': False,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
.
.
.
说明:上一节课的笔记,我已经把templates
目录创建在项目根目录下了,没有这么做的同学,应该在myproject
目录下创建目录:templates
2.2.2.静态文件
- 静态文件目录:
/static/
- 图片:
/static/images/
CSS:/static/css
JS:/static/js
实操:
Step1
:从官网中下载生产环境的 bootstrap:https://v3.bootcss.com/getting-started/#download,并解压缩。
Step2
:将解压后的css、js、font
三个文件夹拷贝到项目根目录下的static
目录中
目录结构如下:
2.3.优化blog
应用
优化的目标:
2.3.1.基础模板
/templates/header.html
/templates/footer.html
/templates/base.html
实操:
Step1
:分别新建模版文件 ,myproject/templates/base.html
、myproject/templates/footer.html
和myproject/templates/base.html
。
header.html
:
{% load staticfiles %}
<div class="container">
<nav class="navbar navbar-default" navigation>
<div class="navbar-header">
<img src="{% static './images/logo.png' %}" alt="" width="100">
</div>
<div>
<ul class="nav navbar-nav">
<li><a href="{% url 'blog:blog_title' %}">BLOG</a></li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li><a href="#">登录</a></li>
</ul>
</div>
</nav>
</div>
说明:
1).{% load staticfiles %}
表示要加载静态文件
2). {% static './images/logo.png' %}
表示加载本地 static/images
目录下的logo.png
图片文件。
3). {% url 'blog: blog_title' %}
表示加载 blog
应用下name=blog_title
的路由,这种模版标签的使用,项目迁移时方便维护管理。要使这个模板标签生效,得做如下两个更改:
myproject/mysite/urls.py
文件更改为:
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('blog/', include('blog.urls', namespace='blog')), # 后面添加了 namespace 参数
]
myproject/blog/urls.py
文件更改为:
from django.urls import path
from . import views
# 新增 下面这行
app_name = 'blog'
urlpatterns = [
# 路由新增 name 参数
path('', views.blog_title, name='blog_title'),
path('<int:article_id>/', views.blog_article, name='blog_article')
]
Step2
:新建文件`myproject/templates/footer.html,写入以下代码:
<div class="container">
<hr>
<p class="text-center">网易微专业:Python全栈工程师</p>
</div>
Step3
:替换base.html
文件为以下内容:
{% load staticfiles %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{% block title %}{% endblock %}</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="{% static 'css/bootstrap.css' %}">
</head>
<body>
{% include 'header.html' %}
<div class="container">
{% block content %}{% endblock %}
</div>
{% include 'footer.html' %}
{% block javascript %}{% endblock %}
</body>
</html>
说明:base.html
将header.html
和footer.html
引入了
运行结果:
三、课程小结
- 01
MTV
模式 - 02.重新规划项目目录