设为首页 加入收藏

TOP

django进阶-1(一)
2017-10-10 08:27:19 】 浏览:6800
Tags:django 进阶

前言: 各位久等了,django进阶篇来了。

一、get与post

接口规范: url不能写动词,只能写名词

django默认只支持两种方式: get, post

get是获取数据

?user=zcl&password=abc&email=669@qq

?号表示后面是参数,&在两参数中间

request.GET.get("password")

上面这句代码可获取密码abc,是明文的!!

post获取密码是密文的。post请求用于创建或修改数据。

    if request.method == 'GET':
        # <view logic>
        return HttpResponse('result')

  

二、模版渲染

你可能已经注意到我们在例子视图中返回文本的方式有点特别。 也就是说,HTML被直接硬编码在 Python 代码之中。

1 def current_datetime(request): 2     now = datetime.datetime.now() 3     html = "<html><body>It is now %s.</body></html>" % now 4     return HttpResponse(html)

 

尽管这种技术便于解释视图是如何工作的,但直接将HTML硬编码到你的视图里却并不是一个好主意。 让我们来看一下为什么:

  • 对页面设计进行的任何改变都必须对 Python 代码进行相应的修改。 站点设计的修改往往比底层 Python 代码的修改要频繁得多,因此如果可以在不进行 Python 代码修改的情况下变更设计,那将会方便得多。
  • Python 代码编写和 HTML 设计是两项不同的工作,大多数专业的网站开发环境都将他们分配给不同的人员(甚至不同部门)来完成。 设计者和HTML/CSS的编码人员不应该被要求去编辑Python的代码来完成他们的工作。
  • 程序员编写 Python代码和设计人员制作模板两项工作同时进行的效率是最高的,远胜于让一个人等待另一个人完成对某个既包含 Python又包含 HTML 的文件的编辑工作。

基于这些原因,将页面的设计和Python的代码分离开会更干净简洁更容易维护。 我们可以使用 Django的 模板系统 (Template System)来实现这种模式。

Django模版基本语法

1 >>> from django.template import Context, Template 2 >>> t = Template('My name is {{ name }}.') 3 >>> c = Context({'name''Stephane'}) 4 >>> t.render(c) 5 u'My name is Stephane.'

同一模板,多个上下文: 一旦有了 模板 对象,你就可以通过它渲染多个context

1 >>> from django.template import Template, Context 2 >>> t = Template('Hello, {{ name }}') 3 >>> print t.render(Context({'name''John'})) 4 Hello, John 5 >>> print t.render(Context({'name''Julie'})) 6 Hello, Julie 7 >>> print t.render(Context({'name''Pat'})) 8 Hello, Pat

无论何时我们都可以像这样使用同一模板源渲染多个context,只进行 一次模板创建然后多次调用render()方法渲染(render)会更为高效:

1 # Bad
2 for name in ('John''Julie''Pat'): 3     t = Template('Hello, {{ name }}') 4     print t.render(Context({'name': name})) 5   6 # Good 生成模版实例是有系统开销的,一个模版实例是可以进行多次上下文的渲染
7 t = Template('Hello, {{ name }}') 8 for name in ('John''Julie''Pat'): 9     print t.render(Context({'name': name}))

注意: 如果没有python manage.py shell 是会曝错的!!这句代码的意义是导入django环境

 

三、深度变量的查找

在到目前为止的例子中,我们通过 context 传递的简单参数值主要是字符串,然而,模板系统能够非常简洁地处理更加复杂的数据结构,例如list、dictionary和自定义的对象

在 Django 模板中遍历复杂数据结构的关键是句点字符 (.)。

向模板传递一个 Python 字典。 要通过字典键访问该字典的值,可使用一个句点:

1 >>> from django.template import Template, Context 2 >>> person = {'name''Sally''age''43'} 3 >>> t = Template('{{ person.name }} is {{ person.age }} years old.') 4 >>> c = Context({'person': person}) 5 >>> t.render(c) 6 u'Sally is 43 years old.'

同样,也可以通过句点来访问对象的属性。 比方说, Python 的 datetime.date 对象有 year 、 month 和 day 几个属性,你同样可以在模板中使用句点来访问这些属性:

 1 >>> from d
首页 上一页 1 2 3 4 5 下一页 尾页 1/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇pychallenge(4)-follow the chain 下一篇django进阶-1

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目