简单的第一天

来源:互联网 发布:一地狗粮什么意思网络 编辑:程序博客网 时间: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载入的模板究竟是不是对的、需要的那个模板。

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
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 10个月宝宝便秘大便干燥怎么办 一岁半宝宝老是拉糊糊状大便怎么办 外阴部长了一个疙瘩有点痒怎么办 小孩打架被另一个小孩家人告怎么办 德保豆浆机有电但不工作怎么办 刚买的笔记本c盘不足怎么办 qq糖粘在喉咙气管里怎么办 穿上旗袍后感觉后腰处不平整怎么办 机打票给客人给错联怎么办?急 ps修证件照感觉不太立体怎么办 手机百度上下载的文档打不开怎么办 5岁宝宝乘飞机没带证件怎么办 网上订飞机票忘记订儿童票了怎么办 两岁宝宝对牛奶鸡蛋过敏了怎么办 两岁宝宝坐不住好跑怎么办 宝宝两岁多了不愿意坐小马桶怎么办 坐火车小孩拉屎在被子上怎么办 川航飞机票名字错了一个字怎么办 胜战本领怎么看走向战场怎么办 数数字油画你的颜料干了怎么办? 数字油画涂颜料涂错了怎么办 绝地求生模拟器注册已达上限怎么办 孕妇把番茄和虾一起吃了怎么办 4岁宝贝吃了玩具小电池怎么办 微信使用零钱需完善实名信息怎么办 两岁宝宝刷牙不会吐水怎么办 孩子牙龈上长了小牙怎么办 供暖公司未供暖却收取供暖费怎么办 两岁宝宝认知和语言能力低怎么办 蜡笔同步被对方发现删掉的怎么办 微信时间和手机时间不同步怎么办 孩子们家乡爱画美丽的也自己怎么办 娃把豆豆弄进鼻孔了怎么办 20岁了不知道自己该干什么怎么办 遇到一个新手买家恶意拍下怎么办 淘宝卖螃蟹有什么要求美工怎么办 淘宝衣服吊牌剪了想退货怎么办修 用图片在淘宝搜衣服搜不到怎么办 汽车黑塑料水砂纸磨的不平怎么办 sat报名要你填10位电话怎么办 手绘板连接电脑绘画有点迟钝怎么办