django第二个项目--使用模板做一个站点访问计数器
上一节讲述了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第二个项目--使用模板做一个站点访问计数器相关推荐
- html做空白简历,第二天:给自己做一个在线简历吧-IFE
第二天:给自己做一个在线简历吧 日期 总用时 学习目标 2018.07.31 4h 了解HTML 学习目标 HTML5是什么.学习基本的HTML标签,理解HTML语义化概念 制作简历 学习内容 学习笔 ...
- 硬核项目 | 用Arduino做一个神奇的悬浮灯!
要学嵌入式,关注@我要学嵌入式,嵌入式猛男的加油站. 01 前言 今天给大家介绍的项目,是一个国外初级设计师用Arduino做的一个神奇的悬浮灯! 这是一个适合初学者的3D打印项目. 02 材料准 ...
- 搞个小项目吧,做一个ppt播放器
先来两个参考链接,接下来再进行实战 http://www.geek-workshop.com/forum.php?mod=viewthread&tid=1137 http://www.geek ...
- 使用PHP做一个网站访问IP记录功能
<?php $time = date("y-m-d H:i:s");//$time把访问时间记录下来 如果向把具体年份写出来请把y更改为Y //注意Y要是英文半角哦 $ip ...
- PMBOK(第六版) PMP笔记——《二》第二章 项目运作环境
本文已同步至 GitHub/Gitee/公众号,感兴趣的同学帮忙点波关注~ 第二章:项目运作环境 1. 事业环境因素.组织过程资产 事业环境因素 Enterprise Environmental Fa ...
- 用python做一个计数器_Python写一个UP主计数器(送界面定制指南)
前言 前一段时间我在翻B站.突然,我想到了一个点子--为何不写一个UP主计数器? 于是我到翻了一下B站,发现相关视频也就几个(搜粉丝计数器的时候,一抓也有一些),翻到专栏后,居然没有一个专栏是如何写U ...
- 用 Python 做一个 H5 游戏机器人
原文地址:Creating An HTML5 Game Bot Using Python 原文作者:vesche 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/gold-m- ...
- 动手做一个自组网的网络 - 操作系统内核
动手做一个自组网的网络 - 操作系统内核 动手做一个自组网的网络 - 项目介绍 动手做一个自组网的网络 - 硬件开发板 动手做一个自组网的网络 - 操作系统内核 动手做一个自组网的网络 - 网络协议栈 ...
- 用Django加PIL做一个证件照模板生成器网页
最近在整理自己的简历,发现简历上面的ID照有些太老了,所以就准备重新准备一些证件照,刚好最近在弄自己的博客网站,想着直接做一个网页工具出来,直接生成证件照模板,这样还可以省去PS的麻烦.而且照片涉及到 ...
最新文章
- js基础知识温习:Javascript中如何模拟私有方法
- java.util.date的格式_java.util.Date格式将yyyy-mm-dd转换为mm-dd-yyyy
- WCF服务端调用client.
- 实现BX的内容加上123 并把和送到寄存器AX
- JS 异常: Uncaught RangeError: Maximum call stack size exceeded
- 【小安翻唱】凉宫春日的忧郁--冒険でしょでしょ第五届外语歌曲大赛助兴节目~绫魂论坛送aya的生日礼物筹备开始~...
- 【深圳】掌通宝科技有限公司技术总监(兼架构师),约吗
- java怎么生成字母_java自动生成字母
- 教程系列——用模板快速生成《客户意见反馈表》
- HTML基本标签和一些注释的问题
- 万年历插件软件测试,中华万年历app测试用例.xls
- vue项目中使用高德地图实现添加点标记和获取点击位置信息
- ASP.NET AES加密
- PYTHON 获取邮件发送时间
- 推荐模型评价指标 AUC
- 定义符号常量pi.const float pi= 3.1415926f; 这句话是否正确
- 013. 跟郑军老师再聊科幻
- 千人千面智能淘宝店铺背后的算法研究登陆人工智能顶级会议AAAI 2017
- HTML CSS 动画 实现图片过渡与变换(图片不超过边框范围局部放大)
- Nginx 支持 Quic 从这里开始
热门文章
- linux mysql 写shell_Linux—编写shell脚本操作数据库执行sql
- 打印容器_3D打印:增材点阵结构在压力容器优化设计中的应用
- 模板匹配matchTemplate
- HDU 1999 不可摸数
- python 累积正态分布函数_Python编程基础—Python语句书写规范
- 产品认知:产品经理进入新公司第一件事该做什么?
- 代码android点击效果,GitHub - likaiyuan559/TouchEffects: Android View点击特效TouchEffects,几行代码为所有控件添加点击效果...
- linux下编译openjdk7,Ubuntu 14.04.3 64位环境下OpenJDK7编译
- 5.1.2全景声音箱摆位_如何体验全景声
- 教你吃透CSS的盒子模型(Box Model)