Django值应用和分布式路由

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

Django值应用和分布式路由

1.分布式路由

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

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

项目层架目录如下所示:
Django值应用和分布式路由
Django中,主路由配置文件(urls.py)可以不处理用户具体路由,主路由配置文件做请求的分发,具体的请求可以由各自用的应用来处理。
Django值应用和分布式路由
具体如何配置:

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

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

from django.contrib import admin
from django.urls import path, include
from . import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('test_static',views.test_static),
    # http://127.0.0.1:8000/music/index
    path('music/',include('music.urls'))
]

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

from django.urls import path
from music import views

urlpatterns = [
    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('这是音乐频道首页')

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

2.应用模板

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

Django值应用和分布式路由
同时,调整下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>

Django值应用和分布式路由

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

上一篇:python爬虫添加请求头


下一篇:Django 前端BootCSS 实现分页