前言:本文是学习网易微专业的《python全栈工程师 - Django快速建站》课程的笔记,欢迎学习交流。同时感谢老师们的精彩传授!

一、课程目标

  • 了解MTV模式
  • 重新设置项目的模板目录

二、详情解读

2.1.MTV模式
2.1.1. MVC模式
  • 网站开发中,普遍遵循MVC模式:1978Trygve 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.htmlmyproject/templates/footer.htmlmyproject/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, includeurlpatterns = [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.htmlheader.htmlfooter.html引入了

运行结果:

三、课程小结
  • 01 MTV模式
  • 02.重新规划项目目录

Python学习笔记:7.2.2 Django快速建站 - MTV模式相关推荐

  1. Python学习笔记:7.2.3 Django快速建站 - 表单

    前言:本文是学习网易微专业的<python全栈工程师 - Django快速建站>课程的笔记,欢迎学习交流.同时感谢老师们的精彩传授! 一.课程目标 创建用户管理应用 开发用户登录功能 理解 ...

  2. Python学习笔记:7.5.7 Django快速建站 - Web开发实战 微信公众号开发2

    前言:本文是学习网易微专业的<python全栈工程师 - Django快速建站>课程的笔记,欢迎学习交流.同时感谢老师们的精彩传授! 一.课程目标 实现消息回复 利用测试公众号进行测试 二 ...

  3. Python学习笔记:7.5.1 Django快速建站 -源码版本管理

    前言:本文是学习网易微专业的<python全栈工程师 - Django快速建站>课程的笔记,欢迎学习交流.同时感谢老师们的精彩传授! 一.课程目标 了解源码版本管理的意义 掌握初步的git ...

  4. Python学习笔记:7.5.8 Django快速建站 - Web开发实战 微信公众号开发3

    前言:本文是学习网易微专业的<python全栈工程师 - Django快速建站>课程的笔记,欢迎学习交流.同时感谢老师们的精彩传授! 一.课程目标 自定义菜单 利用测试公众号进行测试 二. ...

  5. Python学习笔记--10.Django框架快速入门之后台管理admin(书籍管理系统)

    Python学习笔记--10.Django框架快速入门之后台管理 一.Django框架介绍 二.创建第一个Django项目 三.应用的创建和使用 四.项目的数据库模型 ORM对象关系映射 sqlite ...

  6. python学习笔记(一)Python 简单介绍

    Python学习笔记(一)Python 简单介绍 Python介绍 Python简介 Python应用领域 Python是解释型的语⾔ 编译和解释的区别是什么? 编译型vs解释型 编译型 解释型 Py ...

  7. python学习笔记目录

    人生苦短,我学python学习笔记目录: week1 python入门week2 python基础week3 python进阶week4 python模块week5 python高阶week6 数据结 ...

  8. TensorFlow学习笔记(二):快速理解Tutorial第一个例子-MNIST机器学习入门 标签: 机器学习SoftmaxTensorFlow教程 2016-08-02 22:12 3729人阅

    TensorFlow学习笔记(二):快速理解Tutorial第一个例子-MNIST机器学习入门 标签: 机器学习SoftmaxTensorFlow教程 2016-08-02 22:12 3729人阅读 ...

  9. Python学习笔记:Day13 提升开发效率

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

最新文章

  1. 民族、学历学位、所学专业、、专业技术职务 对应表
  2. 痛入爽出 HTTP/2:代码实战1
  3. 为何大公司看起来都那么糟?
  4. weblogic与sitemesh乱码问题
  5. oKit项目管理软件试用及感受
  6. 8位两院院士、20位长江、杰青……这个学院厉害了!
  7. web 折线图大数据量拉取展示方案_分布式、服务化的企业级 ERP 系统架构设计方案...
  8. sql int 比较_分享 21 个编写 SQL 的好习惯
  9. m苹果放n篮子_能用一只手,我绝对不用一双:苹果试图解锁更多Apple Watch控制手势...
  10. php钓鱼怎么使用方法,路亚钓法操作步骤及抛投技巧
  11. series 锐捷rgrsr20_锐捷RG-RSR20-04E路由器
  12. 如何查看Python源代码
  13. 高速PCB电路板的信号完整性设计
  14. 计算机电源模式怎么删,电脑的电源选项里只剩下了平衡模式怎么办?
  15. SWOT分析流程图模板分享
  16. springboot整合mybatis拦截器分页
  17. Es6模板字符串封装与使用
  18. PHP知识大全【高级】
  19. 没有计算机年代科学家如何计算,难倒了无数科学家的 三体问题
  20. AJP:斯坦福加速智能神经调控疗法治疗难治性抑郁症

热门文章

  1. 局域网内抢网速_路由器要不要每天重启?难怪网速慢,多亏宽带师傅透露
  2. 炒股的智慧:股票投资93条秘籍
  3. 一篇D5100使用的好文章
  4. VMware15.5虚拟机软件安装教程(多图流步骤详细)
  5. 一个MessageBox窗口[演示]ShellCode(WINXPSP2下测试通过)
  6. 计算机超频的方法,原来电脑超频如此简单,小白也能轻松搞定
  7. tassel软件使用linux,Linux系统下TASSEL5.0的安装及使用
  8. 从IMDB上爬取MovieLens-1m的补充数据(电影海报和简介)
  9. 机器人 郑佳佳_浙大硕士被暗恋对象拒绝后 和自己造的充气娃娃结婚了
  10. python 高级技巧