上一节讲述了django和第一个项目HelloWorld,这节我们讲述如何使用模板,并做一个简单的站点访问计数器。

1、建立模板

  在myblog模块文件夹(即包含__init__.py的文件夹)下面新建一个文件夹templates,用于存放HTML模板,在templates下建立一个index.html

<html>
<body><h1>Welcome</h1><p>Learning Python and Django Here!</p>
</body>
</html>

2、制定模板路径

  修改myblog模块文件夹的setting.py,将我们之前新建的模板文件夹路径添加到进去,注意元组只有一个元素时要添加一个逗号","

TEMPLATE_DIRS = ('myblog/templates',)

3、导入模块

  修改我们之前HelloWorld项目里面的views.py,将模板导入,并设置一个上下文:

#!-*-encoding:utf-8-*-
from django.http import HttpResponse
from django.template import loader,Contextdef myHelloWorld(request):t = loader.get_template("index.html")#导入模板para ={}#上下文参数c = Context(para)#上下文return HttpResponse(t.render(c))

4、查看模块是否导入成功

  切换到manage.py所在目录

python manage.py runserver

  在浏览器中打开http://127.0.0.1:8000/Hello/,如果没有出现错误的话,应该看到原来的Hello my django 已经变为我们index.html定义的布局

5、使用模板变量进行交互

  修改我们的模板index.html,设置连个模板变量,title和welcome:

<html>
<body>
<title>{{title}}</title>
<h1>{{wlecome}}</h1><p>Learning Python and Django Here!</p>
</body>
</html>

6、在view中使用模板变量

  修改我们的views.py,以字典的格式将上下文参数设置为para = {"title":"MyBlog","welcome":"欢迎"},其中键是模板中的变量名,值是我们希望显示的值:

#!-*-encoding:utf-8-*-
from django.http import HttpResponse
from django.template import loader,Contextdef myHelloWorld(request):t = loader.get_template("index.html")#导入模板para = {"title":"MyBlog","welcome":"欢迎"}#上下文参数c = Context(para)#上下文return HttpResponse(t.render(c))

  模板变量的值可以是字典,字符串,列表,对象,函数,具体看django的template文档

7、查看模板变量是否起作用

  如果刚刚的runserver没有关闭,那么服务器就一直还开着,如果管了,重新启动一次,在浏览器刷新http://127.0.0.1:8000/Hello/

  我们会看到,设置的title变为了"MyBlog",welcome变成了"欢迎",说明模板变量起作用了

8、设置站点访问计数器

  先修改index.html如下:

<html>
<body>
<title>{{title}}</title><h1>{{welcome}}</h1><p>Learning Python and Django Here!</p>
<li>{{content}}</li>
<p></p>
<li>您是第{{count}}个访问本站的朋友</li>
<li>访问时间:{{time}}</li>
</body>
</html>

  现在我们的模板中有了5个模板变量。

  我们利用一个文件保存已经访问过本站点的次数,修改views.py如下:

#!-*-encoding:utf-8-*-
from django.http import HttpResponse
from django.template import loader,Contextdef getTime():#获取当前时间import timereturn time.ctime()def getCount():#获取访问次数countfile  = open('count.dat','a+')#以读写形式打开文件counttext = countfile.read()   try:count = int(counttext)+1except:count = 1    countfile.seek(0)countfile.truncate()#清空文件countfile.write(str(count))#重新写入新的访问量
    countfile.flush()countfile.close()return countdef myHelloWorld(request):t = loader.get_template("index.html")#导入模板    time = getTime()count = getCount()para = {"title":"MyBlog",'welcome':"欢迎","content":"今天我们学习如何制作一个访问站点计数器","count":count,"time":time}c = Context(para)#上下文return HttpResponse(t.render(c))

  这里面主要添加了两个方法,一个用于获取当前时间,另一个用于获取访问次数。

9、测试我们的站点计数器

  在测试之前我们对URL路径做一个小的修改,将Hello路径换成index路径,这样看书去跟第一个项目有区别些。

 url(r'^index/$',myHelloWorld)

  在浏览器其中刷新http://127.0.0.1:8000/Hello/将会看到404 not found

  

  换成http://127.0.0.1:8000/index/后,我们的站点访问计数器就工作了:

  

  不断的刷新浏览器,你会看到访问次数在增加...

  如果这里出现错误,看错误提示,很可能是乱码错误:

  

  这是因为我们的py文件设置的utf-8格式,而HTML文件用的GBK格式,你可以用NotePad++等编辑器编辑一下html文件的格式,设置为utf-8格式就好了

10、总结

  这一节我们学会了,使用模板和模板变量,当然这里只是一点皮毛,但对我们理解模板有着启蒙的作用。

转载于:https://www.cnblogs.com/fengfenggirl/archive/2013/05/22/django_template_viste_count.html

django第二个项目--使用模板做一个站点访问计数器相关推荐

  1. html做空白简历,第二天:给自己做一个在线简历吧-IFE

    第二天:给自己做一个在线简历吧 日期 总用时 学习目标 2018.07.31 4h 了解HTML 学习目标 HTML5是什么.学习基本的HTML标签,理解HTML语义化概念 制作简历 学习内容 学习笔 ...

  2. 硬核项目 | 用Arduino做一个神奇的悬浮灯!

    要学嵌入式,关注@我要学嵌入式,嵌入式猛男的加油站. 01  前言 今天给大家介绍的项目,是一个国外初级设计师用Arduino做的一个神奇的悬浮灯! 这是一个适合初学者的3D打印项目. 02  材料准 ...

  3. 搞个小项目吧,做一个ppt播放器

    先来两个参考链接,接下来再进行实战 http://www.geek-workshop.com/forum.php?mod=viewthread&tid=1137 http://www.geek ...

  4. 使用PHP做一个网站访问IP记录功能

    <?php $time = date("y-m-d H:i:s");//$time把访问时间记录下来 如果向把具体年份写出来请把y更改为Y //注意Y要是英文半角哦 $ip ...

  5. PMBOK(第六版) PMP笔记——《二》第二章 项目运作环境

    本文已同步至 GitHub/Gitee/公众号,感兴趣的同学帮忙点波关注~ 第二章:项目运作环境 1. 事业环境因素.组织过程资产 事业环境因素 Enterprise Environmental Fa ...

  6. 用python做一个计数器_Python写一个UP主计数器(送界面定制指南)

    前言 前一段时间我在翻B站.突然,我想到了一个点子--为何不写一个UP主计数器? 于是我到翻了一下B站,发现相关视频也就几个(搜粉丝计数器的时候,一抓也有一些),翻到专栏后,居然没有一个专栏是如何写U ...

  7. 用 Python 做一个 H5 游戏机器人

    原文地址:Creating An HTML5 Game Bot Using Python 原文作者:vesche 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/gold-m- ...

  8. 动手做一个自组网的网络 - 操作系统内核

    动手做一个自组网的网络 - 操作系统内核 动手做一个自组网的网络 - 项目介绍 动手做一个自组网的网络 - 硬件开发板 动手做一个自组网的网络 - 操作系统内核 动手做一个自组网的网络 - 网络协议栈 ...

  9. 用Django加PIL做一个证件照模板生成器网页

    最近在整理自己的简历,发现简历上面的ID照有些太老了,所以就准备重新准备一些证件照,刚好最近在弄自己的博客网站,想着直接做一个网页工具出来,直接生成证件照模板,这样还可以省去PS的麻烦.而且照片涉及到 ...

最新文章

  1. js基础知识温习:Javascript中如何模拟私有方法
  2. java.util.date的格式_java.util.Date格式将yyyy-mm-dd转换为mm-dd-yyyy
  3. WCF服务端调用client.
  4. 实现BX的内容加上123 并把和送到寄存器AX
  5. JS 异常: Uncaught RangeError: Maximum call stack size exceeded
  6. 【小安翻唱】凉宫春日的忧郁--冒険でしょでしょ第五届外语歌曲大赛助兴节目~绫魂论坛送aya的生日礼物筹备开始~...
  7. 【深圳】掌通宝科技有限公司技术总监(兼架构师),约吗
  8. java怎么生成字母_java自动生成字母
  9. 教程系列——用模板快速生成《客户意见反馈表》
  10. HTML基本标签和一些注释的问题
  11. 万年历插件软件测试,中华万年历app测试用例.xls
  12. vue项目中使用高德地图实现添加点标记和获取点击位置信息
  13. ASP.NET AES加密
  14. PYTHON 获取邮件发送时间
  15. 推荐模型评价指标 AUC
  16. 定义符号常量pi.const float pi= 3.1415926f; 这句话是否正确
  17. 013. 跟郑军老师再聊科幻
  18. 千人千面智能淘宝店铺背后的算法研究登陆人工智能顶级会议AAAI 2017
  19. HTML CSS 动画 实现图片过渡与变换(图片不超过边框范围局部放大)
  20. Nginx 支持 Quic 从这里开始

热门文章

  1. linux mysql 写shell_Linux—编写shell脚本操作数据库执行sql
  2. 打印容器_3D打印:增材点阵结构在压力容器优化设计中的应用
  3. 模板匹配matchTemplate
  4. HDU 1999 不可摸数
  5. python 累积正态分布函数_Python编程基础—Python语句书写规范
  6. 产品认知:产品经理进入新公司第一件事该做什么?
  7. 代码android点击效果,GitHub - likaiyuan559/TouchEffects: Android View点击特效TouchEffects,几行代码为所有控件添加点击效果...
  8. linux下编译openjdk7,Ubuntu 14.04.3 64位环境下OpenJDK7编译
  9. 5.1.2全景声音箱摆位_如何体验全景声
  10. 教你吃透CSS的盒子模型(Box Model)