简单的第一天
来源:互联网 发布:一地狗粮什么意思网络 编辑:程序博客网 时间:2024/05/01 12:19
经过漫长的漫长的“思考”,终于再次开始动工了。好吧,其实那几天只是为了某个知名的考试而懈怠了,拉慢了进度。
正文:
今天决定写写刚开始的index界面,
First,先建立一个app, 就是那个python manage.py startapp Arbitrary_user
Then, 在Arbitrary_user的Views里面建立一个def index()。。。
Then, 为了以后更改html方便,建立一个templates文件夹统一放置html。
为了让以后每次都从templates中选择html,所以。。。
Then...修改setting 配置模板路径,加入一个TEMPLATE_URLS = {OS.PATH.JOIN(OS.PATH.DIRNAME(__FILE__), '../templates/')} 使用相对路径。
这是某牛关于setting模板路径的感悟:
http://blog.csdn.net/zyz511919766/article/details/18355827
Django默认会在配置文件setting.py的TEMPLATE_LOADERS中开启'django.template.loaders.filesystem.Loader',开启该选项后可以按照TEMPLATE_DIRS中列出的路径的先后顺序从中查找并载入模板。
比如有如下配置:
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.Loader',
)
TEMPLATE_DIRS = (
'/var/www/site/mycitsm/mycitsm/templates',
'/var/www/site/mycitsm/sqlreview/templates',
)
现在TEMPLATE_DIRS中指定的两个目录中均存在base.html,渲染模板的语句为 return render(request, 'base.html',context),那么Django会优先使用第一个目录中的base.html模板。当第一个目录中不存在base.html时,Django才会使用第二个目录中的base.html模板。当然,当两个目录都不存在base.html时,会提示找不到模板。因此为了避免混淆,在使用'django.template.loaders.filesystem.Loader'时尽量不要在TEMPLATE_DIRS指定的不同的位置放置同名模板。
如果确实想在不同的位置放置同名模板呢?比如,为了达到程序复用的目的,我们往往会创建一些某个Django APP特定的static文件和template文件,保存在该APP特定的目录中。而我们不能保证这些文件与其他位置的文件不发生重名。因此这里引入了另外一种模板载入模式'django.template.loaders.app_directories.Loader',开启该选项后可以从INSTALLED_APPS中已安装app对应的templates/目录中查找要渲染的模板文件(对于静态文件对应的是app的static/目录)。
比如有如下配置:
TEMPLATE_LOADERS = (
'django.template.loaders.app_directories.Loader',
)
TEMPLATE_DIRS = ()
这里我们没有在TEMPLATE_DIRS 中指定包含模板文件的路径信息,但由于我们使用的是 'django.template.loaders.app_directories.Loader'载入方式,他会自动从APP对应的templates目录中查找相应的模板文件。比如渲染语句为return render(request, 'base.html',context),APP对应的模板目录为/var/www/site/mycitsm/sqlreview/templates/,只要该目录中存在base.html,Django就会渲染该模板,不存在则提示找不到,除此之外不会从其他地方找该模板文件了。
细心的你可能已经想到了:要是同时使用了两种载入模板的方式呢?比如同时使用了'django.template.loaders.filesystem.Loader'和'django.template.loaders.app_directories.Loader'会如何查找并载入模板?
比如有如下配置:
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
)
TEMPLATE_DIRS = (
'/var/www/site/mycitsm/mycitsm/templates',
'/var/www/site/mycitsm/sqlreview/templates',
)
TEMPLATE_DIRS中指定的两个目录内均存在base.html模板,渲染模板的语句为 return render(request, 'base.html',context),则Django会先依据TEMPLATE_LOADERS中最先列出的模板载入方式来查找并载入模板,方式同上,若找不到模板文件则使用列出的第二种方式查找,依次类推,直至找到或找不到。这样的话,Django要么找不到模板,要么会载入最先找到的模板,若在多个不同路径下存在同名的模板文件,最终载入的模板与列出的载入方式的顺序和列出的包含模板的目录的顺序嘻嘻相关。这往往是不明确的,极易造成混淆。
因此,通常在APP各自的templates目录中中保存APP特定的模板,并不直接在APP对应templates目录中直接存放模板文件本身,而是在该目录中在创建一层以APP名称命名的目录,比如APP名称为sqlreview则存放该APP模板的目录为.../sqlreview/templates/sqlreview/,在指定要渲染的模板时可以通过模板文件的上一层目录来限定模板文件,以避免混淆,这实际上是提供了一个命名空间。比如return render(request, 'sqlreview/base.html',context),可以在/var/www/site/mycitsm/sqlreview/templates目录中找到该模板。这样便不用担心Django载入的模板究竟是不是对的、需要的那个模板。
正文:
今天决定写写刚开始的index界面,
First,先建立一个app, 就是那个python manage.py startapp Arbitrary_user
Then, 在Arbitrary_user的Views里面建立一个def index()。。。
Then, 为了以后更改html方便,建立一个templates文件夹统一放置html。
为了让以后每次都从templates中选择html,所以。。。
Then...修改setting 配置模板路径,加入一个TEMPLATE_URLS = {OS.PATH.JOIN(OS.PATH.DIRNAME(__FILE__), '../templates/')} 使用相对路径。
这是某牛关于setting模板路径的感悟:
http://blog.csdn.net/zyz511919766/article/details/18355827
Django默认会在配置文件setting.py的TEMPLATE_LOADERS中开启'django.template.loaders.filesystem.Loader',开启该选项后可以按照TEMPLATE_DIRS中列出的路径的先后顺序从中查找并载入模板。
比如有如下配置:
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.Loader',
)
TEMPLATE_DIRS = (
'/var/www/site/mycitsm/mycitsm/templates',
'/var/www/site/mycitsm/sqlreview/templates',
)
现在TEMPLATE_DIRS中指定的两个目录中均存在base.html,渲染模板的语句为 return render(request, 'base.html',context),那么Django会优先使用第一个目录中的base.html模板。当第一个目录中不存在base.html时,Django才会使用第二个目录中的base.html模板。当然,当两个目录都不存在base.html时,会提示找不到模板。因此为了避免混淆,在使用'django.template.loaders.filesystem.Loader'时尽量不要在TEMPLATE_DIRS指定的不同的位置放置同名模板。
如果确实想在不同的位置放置同名模板呢?比如,为了达到程序复用的目的,我们往往会创建一些某个Django APP特定的static文件和template文件,保存在该APP特定的目录中。而我们不能保证这些文件与其他位置的文件不发生重名。因此这里引入了另外一种模板载入模式'django.template.loaders.app_directories.Loader',开启该选项后可以从INSTALLED_APPS中已安装app对应的templates/目录中查找要渲染的模板文件(对于静态文件对应的是app的static/目录)。
比如有如下配置:
TEMPLATE_LOADERS = (
'django.template.loaders.app_directories.Loader',
)
TEMPLATE_DIRS = ()
这里我们没有在TEMPLATE_DIRS 中指定包含模板文件的路径信息,但由于我们使用的是 'django.template.loaders.app_directories.Loader'载入方式,他会自动从APP对应的templates目录中查找相应的模板文件。比如渲染语句为return render(request, 'base.html',context),APP对应的模板目录为/var/www/site/mycitsm/sqlreview/templates/,只要该目录中存在base.html,Django就会渲染该模板,不存在则提示找不到,除此之外不会从其他地方找该模板文件了。
细心的你可能已经想到了:要是同时使用了两种载入模板的方式呢?比如同时使用了'django.template.loaders.filesystem.Loader'和'django.template.loaders.app_directories.Loader'会如何查找并载入模板?
比如有如下配置:
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
)
TEMPLATE_DIRS = (
'/var/www/site/mycitsm/mycitsm/templates',
'/var/www/site/mycitsm/sqlreview/templates',
)
TEMPLATE_DIRS中指定的两个目录内均存在base.html模板,渲染模板的语句为 return render(request, 'base.html',context),则Django会先依据TEMPLATE_LOADERS中最先列出的模板载入方式来查找并载入模板,方式同上,若找不到模板文件则使用列出的第二种方式查找,依次类推,直至找到或找不到。这样的话,Django要么找不到模板,要么会载入最先找到的模板,若在多个不同路径下存在同名的模板文件,最终载入的模板与列出的载入方式的顺序和列出的包含模板的目录的顺序嘻嘻相关。这往往是不明确的,极易造成混淆。
因此,通常在APP各自的templates目录中中保存APP特定的模板,并不直接在APP对应templates目录中直接存放模板文件本身,而是在该目录中在创建一层以APP名称命名的目录,比如APP名称为sqlreview则存放该APP模板的目录为.../sqlreview/templates/sqlreview/,在指定要渲染的模板时可以通过模板文件的上一层目录来限定模板文件,以避免混淆,这实际上是提供了一个命名空间。比如return render(request, 'sqlreview/base.html',context),可以在/var/www/site/mycitsm/sqlreview/templates目录中找到该模板。这样便不用担心Django载入的模板究竟是不是对的、需要的那个模板。
CSS\JS\IMG等静态文件的载入方式与模板文件的载入方式相同,上述结论同样适用。在模板中继承其他模板时的载入方式亦是如此。
接下来,需要配置urls.pyurl(r'^$', 'Arbitrary_user.views.index', name='index'),将默认设置为index
url(r'^index/', 'Arbitrary_user.views.index', name='index'),将index设置为index
经过这样的改动,便能显示index.html了
END
0 0
- 简单的第一天
- 第一天,简单的记录
- TestNg第一天:testNg的简单介绍
- MySQL学习第一天--简单的操作
- 简单crm的项目实现(第一天)
- 学习简单算法的第一天
- 第一天的javascript-简单的计算器和笔记
- 最简单的sql获取当月第一天
- ASP.NET自定义控件 第一天 简单的星级控件
- C++ 学习第一天 简单string类的模拟
- 一:简单的C++程序--初学第一天
- CCNA的第一天 简单命令 常用快捷键
- 第一天:python的安装及print函数简单使用
- struts2学习_简单的demo案例_第一天
- 博客的第一天
- 第一天的新鲜感
- 第一天的清晨
- 第一天的晚上
- ACM牛人给的新手建议
- Asp.Net 后台注册Js脚本和引用JS文件的方法及作用位置
- C#基础知识之二
- hadoop2.x常用端口及定义方法
- java、八大经典书籍,你看过几本?
- 简单的第一天
- HDU 4841 圆桌问题
- java TreeMap TreeSet 用法 原理 详解
- 哪本书是对程序员最有影响、每个程序员都该阅读的书?
- json总结
- HDU 2051 Bitset
- 基于jQuery的图片加载loading效果插件
- js库
- 小字符串