以豆瓣为例,界面上展示了很多栏目,比如电影,音乐等等,每个类型下面有自己的一些内容?我们试想一下,这些内容是否会使用一个views.py处理所有呢?这样版本管理起来太复杂了,此时就有了Django应用的概念,应用是Django项目中一个独立的业务模块,可以包含自己的路由,视图,模板,模型

1.分布式路由

引入了应用的概念后,每一个应用就有自己的MTV,我们具体来看看如何使用应用。创建应用:

#创建应用
djang-admin startapp music
#注册应用,在settings.py中的INSTALLED_APPS中注册一个应用
INSTALLED_APPS = [...'django.contrib.staticfiles','music',
]

要将应用添加到项目中,需要在INSTALLED_APP设置中增加指向该应用的配置文件的链接。对于本例中music应用,它的配置文件MusicConfigs位于music/app.py脚本内,所以配置的路径为music. apps. MusicConfig。多数情况下直接配置为music

F:\Django\DjangoStudy\mysite3>django-admin startapp music

项目层架目录如下所示:

Django中,主路由配置文件(urls.py)可以不处理用户具体路由,主路由配置文件做请求的分发,具体的请求可以由各自用的应用来处理。

具体如何配置:

#主路由中调用inclue函数
include('app名字.url模块名')

因此第一步在主路由配置分布式路由,即在项目同名文件夹二级目录下的urls.py中新增

from django.contrib import admin
from django.urls import path, include
from . import viewsurlpatterns = [path('admin/', admin.site.urls),path('test_static',views.test_static),# http://127.0.0.1:8000/music/indexpath('music/',include('music.urls'))
]

在应用music中手动新增一个urls.py子路由文件

from django.urls import path
from music import viewsurlpatterns = [path('index',views.index_view)
]

在应用music的视图函数views.py中新增一个函数index_view

from django.http import HttpResponse
from django.shortcuts import render# Create your views here.
def index_view(request):return HttpResponse('这是音乐频道首页')


接着继续创建sport和news两个应用,按照music的逻辑,注册路由,添加视图函数和子路由等

2.应用模板

在文章的开头,每一个应用都有自己的的MTV,因此还是需要手动创建一个templates文件夹。这里注意如果外层有同名的html文件,会优先匹配外层templates中的html,如果外层的templates文件夹中没有匹配到的html文件,接着在settings.py中INSTALLED_APPS中,按照注册顺序,依次进行匹配。因此这里创建html文件的目录的时候,可以先创建templates文件夹,在templates下再创建一个应用同名文件夹。


同时,调整下news下视图函数

from django.http import HttpResponse
from django.shortcuts import render# Create your views here.
def index_view(request):# return HttpResponse('这是新闻频道首页')return render(request,'news/index.html')

news/templates/news下的index.html文件如下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>这是新闻频道</title>
</head>
<body>这是新闻频道首页,使用templates/news
</body>
</html>

项目代码见:https://download.csdn.net/download/rhx_qiuzhi/23963960

Django值应用和分布式路由相关推荐

  1. Django的多应用分布式路由

    应用就是在Django项目中,是一个独立的业务模块,可以包含自己的路由,视图,模板,模型. 创建应用app 创建步骤 用manage.py 中的子命令 startapp 创建应用文件夹 在settin ...

  2. 简单了解Django应用app及分布式路由

    前言 应用在Django的项目中是一个独立的业务模块,可以包含自己的路由,视图,模板,模型. 一 创建应用程序 创建步骤 用manage.py中的子命令startapp创建应用文件夹 在setting ...

  3. 7. django应用及分布式路由

    Django应用及分布式路由 应用详解 什么应用 应用在django项目中是一个独立的业务模块,可以包含自己的路由,视图,模板,模型. 例如网站可以分为 金融.体育.娱乐.政治等, 这些就是应用,说白 ...

  4. Django(14)-应用及分布式路由

    Django(1)-简介 Django(2)-创建项目及默认项目目录结构介绍 Django(3)-配置文件详解 Django(4)-URL和视图 Django(5)-路由配置实例 Django(6)- ...

  5. Django - 应用及分布式路由

    应用 应用在 Django 项目中 是一个独立的业务模块,可以包含自己的路由,视图,模板,模型 创建应用 步骤1 --创建 步骤2--注册 配置分布式路由 步骤1 - 主路由中调用 include 函 ...

  6. 009 Django 应用和分布式路由

    应用和分布式路由 文章目录 应用和分布式路由 创建应用 配置分布式路由 应用下的模板 假如我们现在要做的是一个很大的网站,这些网站里面有很多的分区,这么多的分区我们全部都放在同一个views.py里面 ...

  7. 9.Django应用及分布式路由

    目录 1  应用 1.1  创建应用文件夹 1.2  配置应用文件夹 2  分布式路由 2.1  在应用中创建urls.py 2.2  主路由中调用include函数 3  在应用中使用模版 1  应 ...

  8. Django应用与分布式路由

    应用,项目中的独立业务模块,可以保函自己的路由.视图.模板.模型. 一.创建应用 (一)创建应用文件夹 python manage.py startapp [应用名] (二)settings配置 在s ...

  9. Django(静态文件和Django应用和分布式路由)

    什么是静态文件 如:图片.css.js.音频.视频 静态文件配置 --settings.py中 1.配置静态文件的访问路径[该配置默认存在] STATIC_URL = '/static' 指定访问静态 ...

最新文章

  1. JavaScript中几个重要的知识点(1) ---- 面向对象
  2. bzoj 2730: [HNOI2012]矿场搭建——tarjan求点双
  3. php 处理raw数据,php以raw格式传递数据
  4. shiro 散列加盐(salt) 次数的效果
  5. SwiftUI之深入解析如何定制视图的动画和转场
  6. [摘抄]软件设计模式的几个原则
  7. java求最后一位不为0的数字_【Java】 剑指offer(62) 圆圈中最后剩下的数字
  8. oracle em搭建,【oracle】手动安装EM
  9. 如何开启jvm日志_Java 从小白到大牛,JVM 不得不知的一些参数和配置
  10. 数据库设计_SQL数据库设计(数据建模)
  11. kettle 连接 Oracle 异常
  12. 比赛 | 第一届古汉语分词与词性标注国际评测来啦
  13. JAVA怎么出现10行10列的星号_C语言输出n行n列星号
  14. 从“制造”到“智造”,南高齿携手锐捷打造“智能工厂”
  15. 小灰的算法之旅python篇pdf_漫画算法 小灰的算法之旅 Python篇
  16. 机械工程师手册 pdf版下载_现代机械零部件设计手册 [于惠力 编]pdf下载0284
  17. 4.jvm入门到精通
  18. 适合产品经理的桌面壁纸-分类神器
  19. vs code里面的less插件一直报错_ipad4现在怎么登微信?一直显示微信版本过低怎么办...
  20. 基于单片机的温度控制系统

热门文章

  1. SQL Server 查找统计信息的采样时间与采样比例
  2. UVA 1451 Average 数形结合
  3. SQL调优--记一次表统计信息未及时更新导致查询超级慢
  4. Mathematica数据处理(11)--标签
  5. Android性能优化之一:ViewStub
  6. linux下git的简单运用
  7. 如何用互联网上的广告来赚取广告费——有点吹牛吗?
  8. Classical Inheritance in JavaScript
  9. ECMAScript 基础--原始类型
  10. NRF51822之发射功率