博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
明明白白:python网站设计框架django的模板templates路径的最终解决方法
阅读量:6912 次
发布时间:2019-06-27

本文共 2466 字,大约阅读时间需要 8 分钟。

  hot3.png

一个提示 SyntaxError: EOL while scanning string literal :反斜杆错误 \\ 不是 \

我的mysite工程的整个目录:

C:\web\mysite>tree /F卷 C 的文件夹 PATH 列表卷序列号为 00000200 0007:9B9BC:.│  db.sqlite3│  manage.py│├─blog│  │  admin.py│  │  admin.pyc│  │  forms.py│  │  forms.pyc│  │  models.py│  │  models.pyc│  │  tests.py│  │  urls.py│  │  urls.pyc│  │  views.py│  │  views.pyc│  │  __init__.py│  │  __init__.pyc│  ││  ├─migrations│  │      0001_initial.py│  │      0001_initial.pyc│  │      __init__.py│  │      __init__.pyc│  ││  └─templates│      └─blog│              base.html│              post_detail.html│              post_draft_list.html│              post_edit.html│              post_list.html│├─mysite│  │  lujing.py│  │  settings.py│  │  settings.pyc│  │  urls.py│  │  urls.pyc│  │  wsgi.py│  │  wsgi.pyc│  │  __init__.py│  │  __init__.pyc│  ││  └─templates│      ├─mysite│      │      base.html│      ││      └─registration│              login.html│└─static    └─css            blog.css

templates目录一般默认在app下面,我的例子中,templates就在应用blog下面,如果有什么html,会自动识别的,如果你的templates目录是这么建立的,那就不用再mysite/mysite/settings.py中说明templates目录在哪,django会自动查找的,常在APP各自的templates目录中中保存APP特定的模板,并不直接在APP对应templates目录中直接存放模板文件本身,而是在该目录中在创建一层以APP名称命名的目录:mystite/bolg/templates/blog

但是,我非得不走寻常路,我要把templates建立在某个地方,怎么办。

我在写用户认证的是时候需要一个模板login.html,其规定默认的目录是:mysite/mysite/templates/login.html,第二个mysite目录又不是app,你的templates是不会被识别的吧,怎么办,我们在mysite/mysite/settings.py的文件中自定义下我这个templates目录在哪,代码:

TEMPLATE_DIRS = (     os.path.join(BASE_DIR, "mysite\\templates").replace('\\','/'),#注意逗号   )

什么意思,在settings.py中规定了,

import os

BASE_DIR = os.path.dirname(os.path.dirname(__file__)) 

base_dir 就是工程project的目录,工程目录下一级就是应用app的目录。

os.path.dirname(__file__):settings.py文件所在的目录,我的是:C:\web\mysite\mysite

os.path.dirname(os.path.dirname(__file__)) :又来一次,就是 C:\web\mysite\mysite的上一级目录,结果是:C:\web\mysite,也就是说 BASE_DIR是 C:\web\mysite 也就是工程的目录。

下面解释下:

os.path.join(BASE_DIR, "mysite\\templates").replace('\\','/'),#\\转义\

我们替换掉base_dir

os.path.join(BASE_DIR, "mysite\\templates").replace('\\','/'),

os.path.join("C:\web\mysite", "mysite\\templates").replace('\\','/'),

我们不看.replace('\\','/'),

结果是:os.path.join("C:\web\mysite", "mysite\\templates")==C:\web\mysite\mysite\templates

注意,这和文字的join不同,所以要写成mysite\\templates 而不是\\mysite\\templates.

r"C:\web\mysite\mysite\templates".replace('\\','/')=='C:/web/mysite/mysite/templates'

所以前面的那段话就是说:

TEMPLATE_DIRS = (     r'C:/web/mysite/mysite/templates',   )

转载于:https://my.oschina.net/VASKS/blog/382604

你可能感兴趣的文章
错误:docker-ce conflicts with 2:docker-1.13.1-74.git
查看>>
JDK并发包之LinkedBlockingQueue
查看>>
响应式设计(Response Web Design)实践
查看>>
喜迎2015年新年:坦克大战(Robocode)游戏编程比赛图文总结
查看>>
ASP.NET MVC 5 - 给数据模型添加校验器
查看>>
矩表 - 现代数据分析中必不可少的报表工具
查看>>
Ansible 一键配置安装Keepalived+Nginx作为前端,httpd+php作为后端
查看>>
服务器维护安全策略方案
查看>>
maven-assembly-plugin 的includeBaseDirectory研究
查看>>
SSL证书相关技巧 -- 如何访问一个网站,其证书不在系统证书列表中
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
【hadoop】17.MapReduce-wordcount案例
查看>>
MyBatis标签
查看>>
C-问题
查看>>
Spark SQL编程
查看>>
spring概览
查看>>
日期和时间模式
查看>>
获取请求地址
查看>>
apche druid log 配置
查看>>