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

前言:本文是学习网易微专业的《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, 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.htmlheader.htmlfooter.html引入了

运行结果:
在这里插入图片描述

三、课程小结
  • 01 MTV模式
  • 02.重新规划项目目录
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值