明明白白:python网站设计框架django的模板templates路径的最终解决方法

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

我的mysite工程的整个目录:

C:\web\mysite>tree /F
卷 C 的文件夹 PATH 列表
卷序列号为 00000200 0007:9B9B
C:.
│  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‘,
   )
时间: 2024-10-10 10:44:46

明明白白:python网站设计框架django的模板templates路径的最终解决方法的相关文章

Python之Web框架Django

Python之Web框架: Django 一.  Web框架的本质: 对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. 1 #!/usr/bin/env python 2 #coding:utf-8 3 4 #web框架的基础结构,几乎所有开发者都是基于此基础结果进行扩展. 5 6 import socket 7 8 def handle_request(client): 9 buf = client.recv(1024) 10 clien

windows下安装python,安装框架django。

第一步:  首先下载python安装包: 第二步:安装          双击安装包,安装程序.           这里安装到C盘   文件夹命名为  python33. 正在安装........... 安装完成 为了下一步在dos下使用python命令,这里要配置一下环境变量.右击计算机->属性->高级->环境变量->修改系统变量path,添加Python安装地址,笔者这里是C:\Python33; 测试安装: 安装django: 下载django 在下载djando  解压

Django 渲染模板、路径配置、变量使用。

DTL与普通的HTML文件的区别: DTL模板是一种带有特殊语法的HTML文件,这个HTML文件可以被Django编译,可以传递参数进 去,实现数据动态化.在编译完成后,生成一个普通的HTML文件,然后发送给客户端. 渲染模板 先在templates文件夹下创建html文件. render_to_string:找到模板,然后将模板编译后渲染成Python的字符串格式.最后在通过HttpResponse类包装成一个HttpResponse对象返回回去. 在views.py文件中编写 from dj

简单学习Python的web框架Django(一)

我的学习环境是Windows 7,首先安装Python,我安装的版本是Python 2.7,之后需确认"C:\Python27\Scripts;C:\Python27;"这两个路径添加到Path系统变量里面了. 图一 然后下载Django.我下载的版本是Django-1.8.tar.gz.然后解压,命令行方式进入解压目录,用"setup.py install"命令来安装.安装完成后,在python shell中输入"import django",

Python的web框架Django的ORM数据库操作分析

1.建表首先引用下,可model设定的各种字段类型在model中建立一个表from django.db import models Create your models here. class Person(models.Model):#定义一个用户名字段,不能重复username = models.CharField(max_length=10,unique=True) password = models.CharField(max_length=10)#默认值设定1age = models.

Django的模板templates原理初探索

[写在前面的话]这篇文章先发布在https://my.oschina.net/chenx124208739/blog/876964里了,但是公司的网络登录开源中国还是很困难,于是只能食言返回51cto(但是51cto把长代码转化代码格式的处理上真的很烂),就这样吧,在这里继续记录我的工作点滴! 运维的工作时间总是很零散的,首先要应付服务器的告警,然后还要伺候各路开发,再加上一些扩容.续费.开会这样的杂事,最后在烧香不出意外情况的前提下才能有一点时间是属于你自己拓展业务.从清明节结束一路忙到现在,

Python的Flask框架使用Redis做数据缓存的配置方法

flask配置redis 首先得下载flask的缓存插件Flask-Cache,使用pip下载. sudo pip install flask_cache 为应用扩展flask_cache app = Flask(__name__) 1 config = { 2 'CACHE_TYPE': 'redis', 3 'CACHE_REDIS_HOST': '127.0.0.1', 4 'CACHE_REDIS_PORT': 6379, 5 'CACHE_REDIS_DB': '', 6 'CACHE

Python三大主流框架分析

python三大主流框架 """ Django: 大而全 自带的功能特别特别多 类似于航空母舰 有时候过于笨重 Flask 小而精 自带的功能特别特别少 类似于游骑兵 第三方的模块特别特别多,如果将flask第三方模块全部加起来 完全可以超过django 比较依赖于第三方模块 Tornado 异步非阻塞 牛逼到可以开发游戏服务器 A:socket部分 B:路由与视图函数对应关系 C:模板语法 Django: A用的别人的 wsgiref B自己写的 C自己写的 Flask A

Python进阶(三十六)-Web框架Django项目搭建全过程

Python进阶(三十六)-Web框架Django项目搭建全过程 ??IDE说明: Win7系统 Python:3.5 Django:1.10 Pymysql:0.7.10 Mysql:5.5 ??Django 是由 Python 开发的一个免费的开源网站框架,可以用于快速搭建高性能,优雅的网站! Django 特点 强大的数据库功能 用python的类继承,几行代码就可以拥有一个丰富,动态的数据库操作接口(API),如果需要你也能执行SQL语句. 自带的强大的后台功能 几行简单的代码就让你的网