本文回答Django里面的HTML文件应该怎么放,以及Django是如何查找模板文件的。

到目前为止我们没有使用HTML页面,在之前的说明中所有内容都是写死在程序里的,如果你想改变内容就要修改代码。但是显然这不和逻辑,所以要将页面和数据分离,程序产生数据,页面么就是用来展示数据的,将来你想更换展示的样式那么也不需要修改程序,我们这里说的程序是Python代码。

1. 创建你的HTML文件

我们来弄一个HTML页面来做主页,替代之前的hello world页面,毕竟有点丑,其实主页中的HTML写什么随便,我就从网上找了一个Bootstrap模板来用。

https://v3.bootcss.com/examples/jumbotron/

1.1 存放你的html文件

有了主页文件那该放哪里呢?

先放这里吧

1.2 修改的URL配置

在views中添加一个方法,用于处理对于这个页面的请求。注意这里return的时候用来render,虽然HttpResponses可以返回HTML页面,但是当我们需要对模板进行填充的时候它就不行了,render函数的功能是载入模板,填充数据,然后生成HttpResponse对象,然后返回这个对象。

修改URL配置

验证一下,是不是好看多了

1.3 Django是怎么找到这个HTML页面的

要回答这个问题我们还是需要看settings.py配置文件

BACKEND:就是Django用来渲染模板用的引擎,默认是Django自带的,我们也可以缓存Jinjia的引擎,这个至少目前我们还没用到。

DIRS:Django会按顺序从这里的目录里去找模板文件,记住是按照顺序啊。也就是说如果有2个同名的文件那么只会显示第一个找到的。

其实这个TEMPLATES列表默认是空的,我们看到的这些信息都是开发工具给我们生成的,其实也就是通过django-admin建立项目时候产生的。

2. 所有的HTML都要放在默认生成的那个默认的templates目录里吗

毕竟每个APP都有自己的模板文件,都放在这一个目录里会不会比较乱?怎么才能便于管理呢?

2.1 方法一

其实这个很好解决,你可以按照APP名称在默认的templates目录里建立目录,如下图:

现在我们就给mystie这个APP建立一个主页把。HTML代码如下:

在mysite的views.py里面添加处理函数

修改mystie里面的url配置,增加一个导入,建立一个URL匹配模式

测试访问

2.2 方法二

在每一个APP目录里面建立一个templates目录(其实这个目录名没有要求),然后我们把建立的主页文件挪走,如下图:

mysite的URL配置文件不变

这时候你发现mysite里面的views.py文件有报错,找不到了。

我们把前面的目录都删除,发现错误提示没有了

显示正常

这是为什么呢?它怎么知道去mystie这个APP的templates目录里找呢?其实这个还是跟settings.py文件有关

APP_DIRS:它的作用就是让模板引擎去APP的目录里面的templates目录里找模板文件,记住只能是templates目录。该选项默认是False,但是你看到的默认是True,这个也是因为通过django-admin建立项目是帮你设置的。

那如果我的APP里面的模板目录不叫templates呢?比如下面,我把目录名改了,views里又提示找不到了。怎么办呢?

这时候就有用到settings.py文件了,增加一个目录就好了。

Django中的templates(你的HTML页面放哪里)的更多相关文章

  1. Django中的Templates

    1.定义: 定义和flask框架中的是一样的,唯一的不同就是Django中有自己的模板引擎,并非Jinja2,因此有一些不同之处. 2.模板的设置 在 settings.py 中 设置 TEMPLAT ...

  2. Django中使用xadmin作为后台管理页面

    xadmin后台管理 安装:luffy虚拟环境下 # >: pip install https://codeload.github.com/sshwsfc/xadmin/zip/django2 ...

  3. Django中templates使用的补充

    Django中的模版的使用 1.实例:查询用户信息,在页面显示,并隔行有底色 test1/views文件 def userinfo(request): if request.method=='GET' ...

  4. Django中Settings中Templates的路径设置

    ## mysite/mysite/settings.py## mysite是项目名 TEMPLATES = [ { 'BACKEND': 'django.template.backends.djang ...

  5. Django 中 a href标签 使用方法 跳转页面(Django四)

    上次我已经用Django启动了一个登录模板页面 具体过程见:Django启动我的第一个模板页面 但问题是我们只能通过监听的端口访问这一个页面,不能通过页面的一些连接跳转到其他页面如下,我们不能点击注册 ...

  6. django中request对象详解(转载)

    django中的request对象详解 Request 我们知道当URLconf文件匹配到用户输入的路径后,会调用对应的view函数,并将  HttpRequest对象  作为第一个参数传入该函数. ...

  7. Django中的权限系统

    Django中已经为我们设置好了基本的权限系统,在定义好model同步数据库后,在每个库下面都会有一张 'auth_permission' 表.该表里面记录了每条权限的描述(name字段,can do ...

  8. Django中使用Bootstrap

    一.在Django中引用Bootstrap模版 1.首先下载bootsrtap代码(http://v3.bootcss.com/getting-started/#download),并将下载后的文件放 ...

  9. django中url路由配置及渲染方式

    今天我们学习如何配置url.如何传参.如何命名.以及渲染的方式,内容大致有以下几个方面. 创建视图函数并访问 创建app django中url规则 捕获参数 路径转换器 正则表达式 额外参数 渲染方式 ...

随机推荐

  1. 计算机硬件&操作系统

    一.计算机的硬件: 控制器:计算机的指挥系统 运算器:数学运算+逻辑运算 存储器I/O设备:存I取O数据   内存(内存条):短期记忆,速度快,但是断电数据会丢失:   外存(硬盘):永久记忆,速度非 ...

  2. 动态规划——Palindrome Partitioning II

    Palindrome Partitioning II 这个题意思挺好理解,提供一个字符串s,将s分割成多个子串,这些字串都是回文,要求输出分割的最小次数. Example:Input: "a ...

  3. linux shell 发送qq邮件失败

    安装 发送邮件功能 yum -y install postfix yum -y install mailx 使用 mail -s “fsfds” @qq.com < hh 第二次返回此信息 您在 ...

  4. vs2015配置OpenCV遇到的问题

    OpenCV的配置过程可以参考博文:https://www.cnblogs.com/linshuhe/p/5764394.html 简要记载配置过程: 1.官网下载OpenCV安装包,并解压到目录,例 ...

  5. Linux系统下,在文件中查找某个字符串

    在normal模式下按下/即可进入查找模式,输入要查找的字符串并按下回车. Vim会跳转到第一个匹配.按下n查找下一个,按下N查找上一个. Vim查找支持正则表达式,例如/vim$匹配行尾的" ...

  6. Spring源码阅读 源码环境搭建(一)

    ring 源码阅读的搭建(一) 一 下载spring源码 进入官方网页:https://spring.io/projects/spring-framework 进入相关的github位置,下载zip包 ...

  7. python多版本管理工具(pyenv)

    在学习和利用python开发的很多情况下,需要多版本的Python并存.此时需要在系统中安装多个Python,但又不能影响系统自带的 Python.pyenv 就是这样一个 Python 版本管理器. ...

  8. [tkinter]隐藏/销毁控件

    pack布局的情况下有pack_forget()方法让控件“不再显示”但控件还存在可以再次pack出来 from tkinter import * root = Tk() l1 = Label(roo ...

  9. node-basis(提供nodejs开发的基础包)

    地址: https://github.com/flybirdsoft/use-node-basis

  10. rz快速上传文件到ssh服务器

    [root@k8s01 ~]# rz --helprz version 0.12.20Usage: rz [options] [filename.if.xmodem]Receive files wit ...