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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/378343.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

strictmath_Java StrictMath log10()方法与示例

strictmathStrictMath类log10()方法 (StrictMath Class log10() method) log10() method is available in java.lang package. log10()方法在java.lang包中可用。 log10() method is used to return the logarithm of the given (base 10) of the given argument in the method…

30、深入理解计算机系统笔记,并发编程(concurrent)(2)

1、共享变量 1&#xff09;线程存储模型 线程由内核自动调度&#xff0c;每个线程都有它自己的线程上下文&#xff08;thread context&#xff09;&#xff0c;包括一个惟一的整数线程ID&#xff08;Thread ID,TID&#xff09;&#xff0c;栈&#xff0c;栈指针&#xff0c;程序…

PostgreSQL在何处处理 sql查询之十三

继续&#xff1a; /*--------------------* grouping_planner* Perform planning steps related to grouping, aggregation, etc.* This primarily means adding top-level processing to the basic* query plan produced by query_planner.** tuple_fraction i…

【视觉项目】基于梯度的NCC模板匹配代码以及效果

文章目录流程分析工程代码【1】NCC代码【Ⅰ】sttPxGrdnt结构体【Ⅱ】sttTemplateModel模板结构体【Ⅲ】calcAccNCC计算ncc系数函数【Ⅳ】searchNcc NCC模板匹配函数【Ⅴ】searchSecondNcc 二级搜索&#xff1a;在某一特定点周围再以步进为1搜索【2】测试图转外轮廓【Ⅰ】孔洞填…

第七章 再谈抽象

第七章 再谈抽象 对象魔法 多态&#xff1a;可对不同类型的对象执行相同的操作&#xff0c;而这些操作就像“被施了魔法”一样能够正常运行。(即&#xff1a;无需知道对象的内部细节就可使用它)&#xff08;无需知道对象所属的类&#xff08;对象的类型&#xff09;就能调用其…

c语言math乘法,JavaScript用Math.imul()方法进行整数相乘

1. 基本概念Math.imul()方法用于计算两个32位整数的乘积&#xff0c;它的结果也是32位的整数。JavaScript的Number类型同时包含了整数和浮点数&#xff0c;它没有专门的整型和浮点型。因此&#xff0c;Math.imul()方法能提供类似C语言的整数相乘的功能。我们将Math.imul()方法的…

java scanner_Java Scanner nextLong()方法与示例

java scanner扫描器类的nextLong()方法 (Scanner Class nextLong() method) Syntax: 句法&#xff1a; public long nextLong();public long nextLong(int rad);nextLong() method is available in java.util package. nextLong()方法在java.util包中可用。 nextLong() method…

技术总监和CTO的区别 浅谈CTO的作用----软件公司如何开源节流(一)

我一直在思考软件公司如何开源节流。当然&#xff0c;老板也在思考开源节流。当然&#xff0c;老板思考的开源节流在公司运营层面上&#xff0c;而我作为CTO&#xff0c;我考虑的则是在产品运营角度上来思考这个问题。否则&#xff0c;一个软件公司&#xff0c;它的生存与发展就…

梯度下降法预测波士顿房价以及简单的模型评估

目录原理代码关于归一化的思考原理 观察数据可知属性之间差距很大&#xff0c;为了平衡所有的属性对模型参数的影响&#xff0c;首先进行归一化处理。 每一行是一个记录&#xff0c;每一列是个属性&#xff0c;所以对每一列进行归一化。 二维数组归一化&#xff1a;1、循环方式…

Windows Phone 内容滑动切换实现

在新闻类的APP中&#xff0c;有一个经常使用的场景&#xff1a;左右滑动屏幕来切换上一条或下一条新闻。 那么通常我们该使用哪种方式去实现呢&#xff1f;可以参考一下Demo的实现步骤。 1&#xff0c;添加Windows Phone用户自定义控件。例如&#xff1a; 这里我为了演示的方便…

c语言interrupt函数,中断处理函数数组interrupt[]初始化

在系统初始化期间&#xff0c;trap_init()函数将对中断描述符表IDT进行第二次初始化(第一次只是建一张IDT表&#xff0c;让其指向ignore_intr函数)&#xff0c;而在这次初始化期间&#xff0c;系统的0~19号中断(用于分NMI和异常的中断向量)均被设置好。与此同时&#xff0c;用于…

bytevalue_Java Number byteValue()方法与示例

bytevalueNumber类byteValue()方法 (Number Class byteValue() method) byteValue() method is available in java.lang package. byteValue()方法在java.lang包中可用。 byteValue() method is used to return the value denoted by this Number object converted to type byt…

第二章 染色热力学理论单元测验

1,()测定是染色热力学性能研究的基础 吸附等温线。 2,吸附是放热反应,温度升高,亲和力() 减小 3,染色系统中包括() 染料。 染深色介质。 染色助剂。 纤维。 4,下列对状态函数特点叙述正确的为() 状态函数只有在平衡状态的系统中才有确定值。 在非平衡状态的系统…

使用鸢尾花数据集实现一元逻辑回归、多分类问题

目录鸢尾花数据集逻辑回归原理【1】从线性回归到广义线性回归【2】逻辑回归【3】损失函数【4】总结TensorFlow实现一元逻辑回归多分类问题原理独热编码多分类的模型参数损失函数CCETensorFlow实现多分类问题独热编码计算准确率计算交叉熵损失函数使用花瓣长度、花瓣宽度将三种鸢…

开源HTML5应用开发框架 - iio Engine

随着HTML5的发展&#xff0c;越来越多的基于HTML5技术的网页开发框架出现&#xff0c;在今天的这篇文章中&#xff0c;我们将介绍iio Engine&#xff0c;它是一款开源的创建HTML5应用的web框架。整个框架非常的轻量级&#xff0c;只有45kb大小&#xff0c;并且整合了debug系统&…

c语言double root,C语言修仙

root(1)(2/2)AD1AD4林浔合理推测&#xff0c;青城山剑宗&#xff0c;也就是祁云所在的剑修一脉&#xff0c;掌握着一些道修并不知道的传承。譬如——怎样找到赤霄龙雀剑&#xff0c;又或者&#xff0c;怎样使用它。这样一来&#xff0c;青城的守卫阵法没有反应也能解释了&#…

【转】Black Box

Introduction BlackBox是FPGA设计中一个重要的技巧&#xff0c;不过觉得Xilinx的文档没有很好地将它讲清楚。 BlackBox的主要想法就是把设计的某一个子模块单独综合&#xff0c;综合的结果作为一个黑盒子子模块&#xff0c;上层设计不再对这个模块进行优化&#xff0c;只能看到…

Java Compiler disable()方法与示例

编译器类disable()方法 (Compiler Class disable() method) disable() method is available in java.lang package. disable()方法在java.lang包中可用。 disable() method is used to cause the compiler to stop operation. disable()方法用于使编译器停止操作。 disable() m…

【神经网络计算】——神经网络实现鸢尾花分类

本blog为观看MOOC视频与网易云课堂所做的笔记 课堂链接&#xff1a; 人工智能实践:TensorFlow笔记 吴恩达机器学习 疑问与思考 为什么按照batch喂入数据 之前看的视频里面处理数据都是一次性将所有数据喂入&#xff0c;现在看的这个视频对数据进行了分组投入。这是为何&#…

第三章 染色动力学理论单元测试

1,准二级动力学模型认为,染色速率与()的二次方成正比 纤维上未被占满的位置(空位)数量 2,研究染色动力学的意义有() 了解染料走向平衡的速率。 初染速率。 匀染性。 3,求出染料的扩散系数的意义有() 了解各因素对扩散系数的影响。 求出不同温度下的扩散系数,计算…