Django项目和app关系

这里有个问题:页面的设计写死在视图函数的代码里的。如果你想改变页面的样子,你需要编辑 Python 代码。所以让我们使用 Django 的模板系统,只要创建一个视图,就可以将页面的设计从代码中分离出来。

首先,在你的 polls 目录里创建一个 templates 目录。Django 将会在这个目录里查找模板文件。

你项目的 TEMPLATES 配置项描述了 Django 如何载入和渲染模板。默认的设置文件设置了 DjangoTemplates后端,并将 APP_DIRS 设置成了 True。这一选项将会让 DjangoTemplates 在每个 INSTALLED_APPS 文件夹中寻找 "templates" 子目录。这就是为什么尽管我们没有像在第二部分中那样修改 DIRS 设置,Django 也能正确找到 polls 的模板位置的原因。

在你刚刚创建的 templates 目录里,再创建一个目录 polls,然后在其中新建一个文件 index.html 。换句话说,你的模板文件的路径应该是 polls/templates/polls/index.html 。因为 Django 会寻找到对应的 app_directories ,所以你只需要使用 polls/index.html 就可以引用到这一模板了。

模板命名空间

虽然我们现在可以将模板文件直接放在 polls/templates 文件夹中(而不是再建立一个 polls子文件夹),但是这样做不太好。Django 将会选择第一个匹配的模板文件,如果你有一个模板文件正好和另一个应用中的某个模板文件重名,Django 没有办法 区分 它们。我们需要帮助 Django 选择正确的模板,最简单的方法就是把他们放入各自的 命名空间 中,也就是把这些模板放入一个和 自身 应用重名的子文件夹里。

 

 

在我看来,因为settings的文件夹中出现了如下情况

Django配置文件中挂载各APP

myproject/myproject/settings.py中的变量INSTALLED_APPS
该变量的值是一个list,给出在Django项目中包含的Django应用。
Django框架默认情况下,Django项目中包含如下Django应用


INSTALLED_APPS = [
    'django.contrib.admin',         站点管理系统
    'django.contrib.auth',          认证系统
    'django.contrib.contenttypes',      content types框架
    'django.contrib.sessions',          session框架
    'django.contrib.messages',          message框架
    'django.contrib.staticfiles',       静态文件管理框架
]


所以这个在mysite这个文件夹下,polls和installed_app里面配置的基础模块是并行的app,而上面django的官方文档又在polls里的template文件夹里再新建polls文件夹,里面存放html相应视图。上面说这么做的原因是有其他app里的同名文件会导致查找错误,也就是说在template这个文件夹下可能存着别的app的html视图文件。

这一点让我很迷惑,如果说不同的app用不同名字的文件夹区分,他们应该在mysite这个文件夹里就区分开了,为什么会在polls这个app的文件夹里找到别的app的html视图文件,查找的时候已经索引到polls的template,或许是查找方式的问题?

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值