Python学习笔记:7.2.2 Django快速建站 - MTV模式
前言:本文是学习网易微专业的《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, 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.html
将header.html
和footer.html
引入了
运行结果:
三、课程小结
- 01
MTV
模式 - 02.重新规划项目目录
Python学习笔记:7.2.2 Django快速建站 - MTV模式相关推荐
- Python学习笔记:7.2.3 Django快速建站 - 表单
前言:本文是学习网易微专业的<python全栈工程师 - Django快速建站>课程的笔记,欢迎学习交流.同时感谢老师们的精彩传授! 一.课程目标 创建用户管理应用 开发用户登录功能 理解 ...
- Python学习笔记:7.5.7 Django快速建站 - Web开发实战 微信公众号开发2
前言:本文是学习网易微专业的<python全栈工程师 - Django快速建站>课程的笔记,欢迎学习交流.同时感谢老师们的精彩传授! 一.课程目标 实现消息回复 利用测试公众号进行测试 二 ...
- Python学习笔记:7.5.1 Django快速建站 -源码版本管理
前言:本文是学习网易微专业的<python全栈工程师 - Django快速建站>课程的笔记,欢迎学习交流.同时感谢老师们的精彩传授! 一.课程目标 了解源码版本管理的意义 掌握初步的git ...
- Python学习笔记:7.5.8 Django快速建站 - Web开发实战 微信公众号开发3
前言:本文是学习网易微专业的<python全栈工程师 - Django快速建站>课程的笔记,欢迎学习交流.同时感谢老师们的精彩传授! 一.课程目标 自定义菜单 利用测试公众号进行测试 二. ...
- Python学习笔记--10.Django框架快速入门之后台管理admin(书籍管理系统)
Python学习笔记--10.Django框架快速入门之后台管理 一.Django框架介绍 二.创建第一个Django项目 三.应用的创建和使用 四.项目的数据库模型 ORM对象关系映射 sqlite ...
- python学习笔记(一)Python 简单介绍
Python学习笔记(一)Python 简单介绍 Python介绍 Python简介 Python应用领域 Python是解释型的语⾔ 编译和解释的区别是什么? 编译型vs解释型 编译型 解释型 Py ...
- python学习笔记目录
人生苦短,我学python学习笔记目录: week1 python入门week2 python基础week3 python进阶week4 python模块week5 python高阶week6 数据结 ...
- TensorFlow学习笔记(二):快速理解Tutorial第一个例子-MNIST机器学习入门 标签: 机器学习SoftmaxTensorFlow教程 2016-08-02 22:12 3729人阅
TensorFlow学习笔记(二):快速理解Tutorial第一个例子-MNIST机器学习入门 标签: 机器学习SoftmaxTensorFlow教程 2016-08-02 22:12 3729人阅读 ...
- Python学习笔记:Day13 提升开发效率
前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...
最新文章
- 民族、学历学位、所学专业、、专业技术职务 对应表
- 痛入爽出 HTTP/2:代码实战1
- 为何大公司看起来都那么糟?
- weblogic与sitemesh乱码问题
- oKit项目管理软件试用及感受
- 8位两院院士、20位长江、杰青……这个学院厉害了!
- web 折线图大数据量拉取展示方案_分布式、服务化的企业级 ERP 系统架构设计方案...
- sql int 比较_分享 21 个编写 SQL 的好习惯
- m苹果放n篮子_能用一只手,我绝对不用一双:苹果试图解锁更多Apple Watch控制手势...
- php钓鱼怎么使用方法,路亚钓法操作步骤及抛投技巧
- series 锐捷rgrsr20_锐捷RG-RSR20-04E路由器
- 如何查看Python源代码
- 高速PCB电路板的信号完整性设计
- 计算机电源模式怎么删,电脑的电源选项里只剩下了平衡模式怎么办?
- SWOT分析流程图模板分享
- springboot整合mybatis拦截器分页
- Es6模板字符串封装与使用
- PHP知识大全【高级】
- 没有计算机年代科学家如何计算,难倒了无数科学家的 三体问题
- AJP:斯坦福加速智能神经调控疗法治疗难治性抑郁症
热门文章
- 局域网内抢网速_路由器要不要每天重启?难怪网速慢,多亏宽带师傅透露
- 炒股的智慧:股票投资93条秘籍
- 一篇D5100使用的好文章
- VMware15.5虚拟机软件安装教程(多图流步骤详细)
- 一个MessageBox窗口[演示]ShellCode(WINXPSP2下测试通过)
- 计算机超频的方法,原来电脑超频如此简单,小白也能轻松搞定
- tassel软件使用linux,Linux系统下TASSEL5.0的安装及使用
- 从IMDB上爬取MovieLens-1m的补充数据(电影海报和简介)
- 机器人 郑佳佳_浙大硕士被暗恋对象拒绝后 和自己造的充气娃娃结婚了
- python 高级技巧