Django 何为应用app,多应用路由规则,多模板匹配规则

目录

1.应用app

2.创建应用app

3.配置多应用路由规则

4.模板匹配规则


1.应用app

在Django框架中,当项目变得巨大的时候,各种各样的功能全都放在主项目文件,就会显得太过杂乱,缺乏逻辑性和层次性。
Django中App的作用就在于此,我们可以将不同类型的功能分成多个不同的App应用来开发,每个app对应其功能。Django App对程序结构进行了解耦,在团队开发中,架构师对程序团队进行开发分配,例如一组开发app1,二组开发app2,等。

注意:这里指的应用app实际的含义为子项目,在Django开发中我们将创建子项目这一行为叫做应用app
 

2.创建应用app

使用manage.py的子命令startapp创建应用文件夹,在setting.py中找到INSTALLED_APPS参数并在其中添加此应用

实例

# 创建主项目

$ django-admin startpoject apptest

$ cd apptest

# 创建应用app1,music

$ python manage.py startapp music

# 创建应用app2,vedio

$ python manage.py startapp vedio

使用pycharm打开,项目结构如下

 修改主项目(startpeoject 后跟的name)setting.py文件,添加应用app,找到INSTALLED_APPS这个参数

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'music',
    'vedio'
]

3.配置多应用路由规则

在music目录下创建urls.py文件,并写入:

from . import views
from django.conf.urls import url

urlpatterns = [
    url(r'^index',views.index)
]

修改muisc目录下的views.py文件

from django.http import HttpResponse

def index(requests):
    return HttpResponse("--music 首页--")

vedio目录做相同操作 

修改主项目urls.py文件:

from django.urls import path,re_path
from django.conf.urls import include
from . import views

urlpatterns = [
    path(r'^index',views.index),
    path(r'^music/',include('music.urls'))
    path(r'^vedio/',include('vedio.urls'))
    
    #django version > 3.0 使用re_path
    #re_path(r'^index',views.index),
    #re_path(r'^music/',include('music.urls')),
    #re_path(r'^vedio/',include('vedio.urls'))
]

配置pycharm,配置run程序: 

 

 打开浏览器输入:http://127.0.0.1:8000/music/indexhttp://127.0.0.1:8000/vedio/index

总结:首先在主项目的urls.py文件中添加app的匹配规则,再到具体的app中配置urls.py

 

4.模板匹配规则

按照上面的例子,若在setting.py文件中配置了外层的templates路径以及APP_DIRS 设置为true,如:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR,"templates")],
        'APP_DIRS': True,
        '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',
            ],
        },
    },
]

 如图,此时访问http://127.0.0.1:8000/indexhttp://127.0.0.1:8000/music/index将会的到什么结果

 注意:配置tempaltes需要修改views.py文件,调用render函数检索文件目录

from django.http import HttpResponse
from django.shortcuts import render

def index(requests):
    return render(requests,"index.html")

此时可以看到,访问http://127.0.0.1:8000/indexhttp://127.0.0.1:8000/music/index将会的到相同的结果

 

 django查找模板的规则

1.优先查找外层的templates文件夹内的同名html文件

2.若在外层templates文件夹内没有找到同名html,再到app内部的templates内查找

3.若app内部也有同名html文件,则按照setting.py文件中声明的顺序查找

如改配置会先找music下的同名html,再找vedio下的同名html

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'music',
    'vedio'
]

 

提示:模板的查找顺序不依赖路由配置,它是独立寻找的,这也是为什么访问http://127.0.0.1:8000/indexhttp://127.0.0.1:8000/music/index将会的到相同的结果的原因

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值