Django入门实践(二)

摘要:
Django的初学者练习(II)Django模板的简单示例在第一部分中,html是在视图中编写的。这种混合方法不适合大规模开发,代码也不容易管理和维护。让我们使用Django提供的模板来学习。在视图中添加函数输出。py将其保存为csv文件:fromdjango。templateimporter,Context…defoutput:response=HttpResponseresponse['Content-Disposition']='附件;filename=%s.csv'%filenamet=加载程序。get_templatec=上下文响应。writereturnresponse在这里不使用简单的“render_to_response”,因为需要修改响应对象的值,而“render_to_response“封装了响应,因此我们无法修改它。到目前为止,Django的V和T也参与其中。如果还剩下一个M,我们接下来将处理数据库。
Django入门实践(二)

Django模板简单实例

 

  上篇中将html写在了views中,这种混合方式(指Template和views混在一起)不适合大型开发,而且代码不易管理和维护,下面就用Django自带的模板来学习(显示一个通讯簿)。

 
  •  在views.py中添加函数addressbook
 
复制代码
from django.shortcuts import render_to_response

.....

address=[
{'name':'zhou','address':'上海'},
{'name':'zhang','address':'北京'}
]
 #这里的address不是字典列表,而是元组列表
def addressbook(request):
    return render_to_response('list.html',{'address':address})
复制代码
 
  • 创建目录templates,用来存放模板文件;并在目录templates下创建文件list.html:
 

Django入门实践(二)第3张

 
  • 修改settings.py,将templates所在的路径加入TEMPLATE_DIRS中,若有多个模板目录,都可以加入这个元组,Django会按顺序搜索这些目录:
 
TEMPLATE_DIRS = (
    'C:/Python27/Scripts/mysite/templates', #注意这里不是反斜杠
)
 
  • 修改urls.py
 
urlpatterns = patterns('',
    url(r'^$',hello),
    url(r'^add/$',add),
    url(r'^list/$',addressbook),    <==添加这句
)
 
  • 启动web服务(python manage.py runserver),访问url:
 

Django入门实践(二)第4张

   

  从上面这个例子大概可以看出了Django的开发流程,下面是改进上述通讯录,提供csv格式的通讯录下载。

 
  • 修改list.html,在templates/list.html尾部加上一行:
 
<p><a href="/csv/address/">csv格式下载</a></p>
 

这段代码会在通讯录表格下显示一个指向csv格式的通讯录文件的超链接。

 
  • 在views.py中添加函数output用来保存为csv文件:
 
复制代码
from django.template import loader,Context
...

def output(request, filename):
    response = HttpResponse(mimetype='text/csv')
    response['Content-Disposition'] = 'attachment; filename =%s.csv' % filename
    t = loader.get_template('csv.html')
    c = Context({'data':address})
    response.write(t.render(c))
    return response
复制代码
 

  这里没有使用简便的“render_to_response”,因为需要修改response对象的值,而“render_to_response”封装了response,我们无法修改它(参见Djangobook)。实际的工作流程是创建response对象(HttpResposne类的一个实例),修改response的属性加载模板先生成template对象,再生成Context对象),渲染模板(t.render(c)),返回准备好的response对象

 

  (关于保存的文件格式,这个网上很多,可以保存为txt、csv、pdf等格式文件)

 
  • 在templates目录下创建文件csv.html:
 
{% for row in data %}
{{ row.name|addslashes }}, {{ row.address|addslashes }}
{% endfor %}
 
  • 修改urls.py:
 
复制代码
urlpatterns = patterns('',
    url(r'^$',hello),
    url(r'^add/$',add),
    url(r'^list/$',addressbook),
    url(r'csv/(?P<filename>w+)/$',output),    <==添加此句
)
复制代码
 

增加了url映射后,访问/csv/address将调用csv.output(filename='address')

 
  • 在Web服务器中访问:
 

Django入门实践(二)第9张

   

点击“csv格式下载”则会下载保存为csv格式文件。

   

  至此,也涉及到了Django中的V(View)和T(Template),还差一个M,则接下来就和数据库(Model)打交道了。

 
 
 
 
 
 
标签: Django

免责声明:文章转载自《Django入门实践(二)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Modbus协议栈综合实例设计[置顶] AAM算法简介下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Django的View(视图)

目录 Django的View(视图) 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应。 响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片。 无论视图本身包含什么逻辑,都要返回响应。代码写在哪里也无所谓,只要它在你当前项目目录下面。除此之外没有更多的要求了—...

kaptcha Java验证码

原文:http://www.cnblogs.com/chizizhixin/p/5311619.html 在项目中经常会使用验证码,kaptcha 就一个非常不错的开源框架,分享下自己在项目中的使用: 1、首先下载kaptcha 把kaptcha-2.3.2.jar包放在lib下 2、登陆页面初始化 document.getElementById("myc...

egg内置对象

http://eggjs.org/zh-cn/basics/objects.html 目录 egg内置对象 1.1 Application 1.2 Context 1.3 Request and Response 1.4 Helper(扩展) 1.5 Config 1.6 Logger egg内置对象 框架内置基础对象:从 Koa 继承而来的...

Django安装和启动

    1.django安装 在http://www.djangoproject.com/download/这个网站上可以下载django的最新版本。在下载时,要注意django版本和本机安装的Python版本是匹配的。在这个https://docs.djangoproject.com/en/dev/faq/install/#what-python-ve...

上手七牛云存储

早就听说过七牛云存储,终于有时间上手实践。 1、第一步,注册七牛账号,由于是测试,首先申请的是个人账号 2、注册成功之后,默认是体验账号,每月只有1G的空间容量及1G的下载流量       3、账号认证,认证成功之后将升级为标准账号,每月有10G的空间容量及20G的下载流量       虽然认证麻烦了些,但看得出来,七牛还是很良心的,这种免费套餐对于一...

物联网Coap框架 ------- Californium结构分析

  一.Calinfornium简介 Californium 是一款基于Java实现的Coap技术框架,该项目实现了Coap协议的各种请求响应定义,支持CON/NON不同的可靠性传输模。 在同等的Coap协议的技术实现中,Calinfornium框架在众多框架中以性能最优。如下:   二.Californium的项目结构 目前Californium...