1.为什么要使用模板

在上一篇博文中,提到了HttpReponse,但是HttpReponse只能传送字符串,如果要构建一个网页,那么工作量就会十分巨大。模板是一种方便的标签,存在于HTML文件中,我们可以通过模板的语法格式,动态接收服务器发送的数据,再由模板进行渲染。

2.模板目录的配置

既然我们要使用模板,那么我们就要有个目录来存放模板。而且为了我们的程序能够搜索到模板,还要对模板目录进行配置。
(1)在我们的项目目录下新建一个templates文件夹
(2)在templates下新建rango文件夹(注:rango是我的项目中的一个应用)
(3)打开settings.py配置我们的模板信息
方法一:

TEMPLATE_DIRS=(<workspace>/<projectname>)

虽然我们可以使用绝对路径,但是当我们的项目要运行再其他人的机器上时,workspace的名称可能不一样,这样我们就需要使用动态的路径来表示。url和path这种东西,在我们的开发中切忌写“死”了
方法二:(推荐)
在我们的settings.py中有一个名为BASE_DIR的变量,它表示文件所在目录的上级目录,也就是我们的templates文件夹所在目录。
所以我们新建一个变量TEMPLATE_PATH=os.path.join(BASE_DIR,'templates')
ps:os.path.join这个函数会将路径相结合,得到的就是BASE_DIR/templates
好了,现在我们的

TEMPLATE_DIRS=(TEMPLATE_PATH)

3.添加模板

万事俱备,就等我们添加一个模板了。这个模板的位置自然就在templates/rango中,新建一个index.html

<!DOCTYPE html>
<html>
<head>
<title>Rango</title>
<h1>rango says</h1>
hello<strong>{{USERNAME}}</strong>!
<a href="/rango/about">About</a>
</head>
<body>
</body>
</html>

这段html代码表示我们对一个user,say hello

4.修改views.py

目前,我们的views.py文件中,index函数还不能映射到这个index.html文件。所以要对其进行修改

from django.shortcuts import render

引入render(渲染)
新建一个字典变量

context_dict = {'username': "Liao"}
return render(request,'rango/index.html',context_dict)

运行

python manage.py runserver

就可以看到我们的

helloLiao!

5.静态文件

前端开发,html,css,js缺一不可。我们虽然能够使用模板开始渲染了,但是还没有使用到css来给网页添加样式,也没有图片,所以得到的只是一个粗糙简单的页面
(1)在我们的项目中新建static文件夹,在static中再新建images文件夹
(2)同上面,我们为了让程序搜索到static文件夹,仍然需要在settings.py文件中配置相关变量

STATIC_PATH = os.path.join(BASE_DIR,'static')
STATICFILES_DIRS=(STATIC_PATH)

(3)让我们在images文件夹里面悄悄地放一张图片,然后运行程序,
访问
http://127.0.0.1:8000/static/images/
image-name是我们的图片名称,切记要带后缀
不出意外,我们将会在浏览器上看到这幅图片,如果出错,一般会报404 not found
仔细检查django的配置文件拼写即可。

6.结合静态文件和模板

为了使用静态文件,我们需要再模板首行加上这么一句话

{% load staticfiles %}

为了显示我们的图片

<img src="{% static "image/test1.jpg" %}" alt='test picture' />

当中使用到了static,表示我们引用的是一个静态文件。
同理,当我们要使用js,css等外部静态文件时,也可以使用static,提供路径即可。

7.总结

今天学习了模板和静态文件
1.模板
(1)在我们的templates文件夹中新建所需的模板,并且在settings.py文件中配置

    TEMPLATE_PATH=os.path.join(BASE_DIR,'tmeplates')
TEMPLATE_DIRS=(TEMPALTE_PATH,)

(2)在应用的views.py文件中新建视图函数,在视图函数中创建一个字典,在字典中存放我们要传入到模板中的数据。
(3)使用render()函数,生成渲染模板响应

2.静态文件
在static文件夹中存放我们所需的css,js等文件,在static文件夹中新建images文件夹,存放图片。
(1)配置static目录

STATIC_PATH=os.path.join(BASE_DIR,'static')
STATICFILES_DIRS=(STATIC_PATH,)

(2)访问静态文件

localhost:8000/static/images/filename

(3)在模板中访问静态文件

{% load staticfile%}

切记,上面那行代码要放再<!DOCUMENT>下面,而在上面的位置,如果放在中,会造成不必要的空格。
使用{% static "filename" %}访问静态文件。

django模板和静态文件的更多相关文章

  1. django 模板使用静态文件

    1.新建项目 2.新建app,并在install_app中添加该app 3.和app文件夹并列新建static.和TEMPLATES  文件夹,分别放静态文件和模板 4.setting.py中设置 T ...

  2. 我的django之旅(二)模板和静态文件

    我的django之旅(二)模板和静态文件 标签(空格分隔): django 1.为什么要使用模板 在上一篇博文中,提到了HttpReponse,但是HttpReponse只能传送字符串,如果要构建一个 ...

  3. Django中对静态文件的支持(转)

    英文原文:[http://agiliq.com/blog/2013/03/serving-static-files-in-django/] 译文:[http://segmentfault.com/a/ ...

  4. Django (七) token&静态文件&媒体文件

    token&静态文件&媒体文件 1. token 1. 会话技术 2. 服务端会话技术 3. 它实际上就是手动实现的session 4. 实现token 4.1 在models.py中 ...

  5. django中的静态文件

    静态文件 1.什么是静态文件 在django中静态文件是指那些图片.css样式.js样式.视频.音频等静态资源. 2.为什么要配置静态文件 这些静态文件往往不需要频繁的进行变动,如果我们将这些静态文件 ...

  6. vert.x学习(六),动态模板与静态文件的结合

    这篇学习在动态模板里面引入css,把动态模板与静态文件结合起来使用. 编写DynamicReference.java package com.javafm.vertx.helloworld; impo ...

  7. Django基础二静态文件和ORM

    Django基础二静态文件和ORM 目录 Django基础二静态文件和ORM 1. 静态文件 1.1 静态文件基本配置: 1.2 静态文件进阶配置 2. request参数 3. Django配置数据 ...

  8. Django app安装,配置mysql,时区,模板,静态文件,媒体,admin

    1.创建app python manage.py startapp 名字 Migrations 数据库同步目录,记录数据库同步的记录 init 包文件 Admin.py django自带的后台管理文件 ...

  9. Django配置与静态文件

    settings.py """ Django settings for myproject project. Generated by 'django-admin sta ...

随机推荐

  1. Spring Cloud(一)简单的微服务集成Eureka

    1        Spring Cloud简介 1.1             简介 Spring Cloud项目的官方网址:https://projects.spring.io/spring-clo ...

  2. 转 linux 添加PHP环境变量,/etc/profile 不生效,每次都要 source /etc/profile

    http://shanhuxueyuan.com/news/detail/46.html 执行php -v 提示未找到命令,这是因为没有将php路径添加到环境变量 方法一:直接运行命令export P ...

  3. Why Python's Integer Division Floors ---- python int(6/-132)时答案不一致,向下取整

    leetcode150题中有一个步骤: int(6/-132) == 0 or ==-1? 在自己本地python3环境跑是int(6/-132) =0,但是提交的时候确实-1. 查找相关资料解惑: ...

  4. WeQuant教程—1.3 利用回测工具降低交易风险

    量化系统投入实际使用之前,人们会希望提前测试交易的效果.这个期间往往涉及代码的改动和参数的调整.最常见的做法是将历史数据输入量化系统,让量化系统根据既定的交易逻辑进行操作,观察和分析交易结果,找到问题 ...

  5. salt远程实现go编译重启

    使用salt实现jenkins发版时,远程对go项目编译重启 1.go 版本1.12 使用go mod 2.设置go镜像 GOPROXY="https://goproxy.io" ...

  6. 分割nginx日志

    #!/bin/bash #此脚本用于自动分割Nginx的日志,包括access.log和error.log #每天00:00执行此脚本 将前一天的access.log重命名为access-xxxx-x ...

  7. zuul重连配置

    #retry #该参数用来开启重试机制 spring.cloud.loadbalancer.retry.enabled=true #断路器的超时时间,断路器的超时时间需要大于ribbon的超时时间,不 ...

  8. python算法介绍:希尔排序

    python作为一种新的语言,在很多功能自然要比Java要好一些,也容易让人接受,而且不管您是成年人还是少儿都可以学习这个语言,今天就为大家来分享一个python算法教程之希尔排序,现在我们就来看看吧 ...

  9. Nginx静态服务配置---详解root和alias指令

    Nginx静态服务配置---详解root和alias指令 静态文件 Nginx以其高性能著称,常用与做前端反向代理服务器.同时nginx也是一个高性能的静态文件服务器.通常都会把应用的静态文件使用ng ...

  10. Django框架之第四篇(视图层)--HttpRequest对象、HttpResponse对象、JsonResponse、CBV和FBV、文件上传

    视图层 一.视图函数 一个视图函数,简称视图,是一个简单的python函数,它接收web请求并且会返回web响应.响应可以是一张网页的html,一个重定向,或者是一张图片...任何东西都可以.无论是什 ...