随笔分类 -  python

摘要:通用视图1. 前言2. 使用通用视图安全问题的题外话3. 用于显示对象内容的通用视图4. 通用视图的几种扩展用法4.1 自定义结果集的模板名4.2 增加额外的context4.3 查看结果集的子集4.4 更灵活的结果集操作4.5 利用通用视图做额外工作通用视图1. 前言回想一下,在Django中view层起到的作用是相当于controller的角色,在view中实施的动作,一般是取得请求参数,再从model中得到数据,再通过数据创建模板,返回相应响应对象。但在一些比较通用的功能中,比如显示对象列表,显示某对象信息,如果反复写这么多流程的代码,也是一件浪费时间的事,在这里,Django同样给我们 阅读全文
posted @ 2012-09-23 10:46 btchenguang 阅读(8026) 评论(0) 推荐(2) 编辑
摘要:3. Descriptor介绍3.1 Descriptor代码示例3.2 定义3.3 Descriptor Protocol(协议)3.4 Descriptor调用方法4. 基于Descriptor实现的功能4.1 property4.2 函数和方法,绑定与非绑定4.3 super5. 结尾3. Descriptor介绍3.1 Descriptor代码示例class RevealAccess(object):"""创建一个Descriptor类,用来打印出访问它的操作信息"""def __init__(self, initval=No 阅读全文
posted @ 2012-09-18 16:18 btchenguang 阅读(7134) 评论(3) 推荐(2) 编辑
摘要:python中基于descriptor的一些概念(上)1. 前言2. 新式类与经典类2.1 内置的object对象2.2 类的方法2.2.1 静态方法2.2.2 类方法2.3 新式类(new-style class)2.3.1 __init__方法2.3.2 __new__静态方法2.4. 新式类的实例2.4.1 Property2.4.2 __slots__属性2.4.3 __getattribute__方法2.4.4 实例的方法2.5 新的对象模型2.5.1 多继承2.5.2 MRO(Method Resolution Order, 方法解析顺序)2.5.3 协作式调用父类方法python 阅读全文
posted @ 2012-09-17 17:59 btchenguang 阅读(28664) 评论(2) 推荐(14) 编辑
摘要:Model进阶用法回顾访问外键访问多对多关系更改数据库结构当处理数据库结构改变时,需要注意到几点:增加字段首先在开发环境中:再到产品环境中:删除字段删除多对多字段删除modelManager管理器给管理器添加新的方法修改返回的QuerySetModel的方法执行自定义SQL语句Model进阶用法回顾Django中的model层主要和数据库进行交互,使用数据库API对数据库进行增删改查的操作。下面将介绍关于model层更深入的用法。下面是之前创建model的代码:from django.db import modelsclass Publisher(models.Model):name = mo 阅读全文
posted @ 2012-09-09 11:05 btchenguang 阅读(26863) 评论(2) 推荐(6) 编辑
摘要:Template加载机制扩展你的模板系统创建模板库实现自定义过滤器1. 创建register变量2. 定义过滤器函数3. 注册过滤器函数实现自定义tag了解模板编译过程 创建tag实战1. 定义Node节点类,实现render方法2. 创建Compilation函数3. 注册tag4. 运行复杂的实现自定义tag的其他几种方法1. 在Node类的render函数中设置context2. 实现块作用区域的tag3. 在块作用tag中保留context内容4. 快速创建简单tag的方法5. 创建Inclusion Tag创建自定义模板加载类Template加载机制一般来说,你在你的文件系统中存入模 阅读全文
posted @ 2012-09-05 18:45 btchenguang 阅读(27849) 评论(1) 推荐(9) 编辑
摘要:前言需要扩展Python语言的理由:创建Python扩展的步骤1. 创建应用程序代码2. 利用样板来包装代码a. 包含python的头文件b. 为每个模块的每一个函数增加一个型如PyObject* Module_func()的包装函数c. 为每个模块增加一个型如PyMethodDef ModuleM... 阅读全文
posted @ 2012-09-04 19:06 btchenguang 阅读(49436) 评论(11) 推荐(7) 编辑
摘要:HTML代码自动转义(auto-escaping)当使用模板生成HTML代码时,如果变量内容是一些影响HTML结果的字符时,那就挺危险的。例如,模板内容如下:Hello {{ name }}当name的值为:<script>alert('hello')</script>渲染后的HTML结果就是:Hello <script>alert('hello')</script>以上的代码运行的结果就是会让浏览器弹出一个javascript的警告窗口。同理,如果name的值为<b>hanks,那么结果中Hello以 阅读全文
posted @ 2012-09-03 16:49 btchenguang 阅读(4271) 评论(2) 推荐(2) 编辑
摘要:也许,你想要自定义和扩展模板引擎,下面会介绍一些关于如何去扩展模板系统的方法,了解一下模板系统的工作原理,同时也会介绍Django模板系统中的auto-escapint功能,这是一种安全机制。复习一下模板语言的用法{# 模板tag的用法 #}{% if done %}<strong>Over</strong>{% else %}<strong>wait</strong>{% endif %}{# 模板变量的用法 #}Now is {{ nowtime }}在views.py中使用模板的时候:1. 通过模板名,获得模板对象2. 创建context对 阅读全文
posted @ 2012-09-01 16:06 btchenguang 阅读(9923) 评论(0) 推荐(2) 编辑
摘要:原贴来源http://wiki.woodpecker.org.cn/moin/ObpLovelyPython/AbtWebModulespython实现web服务器web开发首先要有web服务器才行。比如apache,但是在开发阶段最好有一个简单方便的开发服务器,容易重启进行调试,等开发调试完毕后,再将代码部署到成熟稳定高效的web服务器。# -*- coding: utf-8 -*-from wsgiref import simple_server# 定义一个输出 hello world 和环境变量的简单web应用程序def hello_app(environ, start_response 阅读全文
posted @ 2012-08-31 10:00 btchenguang 阅读(4894) 评论(4) 推荐(1) 编辑
摘要:可调用的对象是python执行环境中最重要的部分,python语句,赋值,表达式,模块等,这些对象只是构成可执行代码块的拼图的很少的一部分,而这些代码块被称为代码对象。每个可调用的对象的核心都是代码对象。一般来说,代码对象可以作为函数或者方法调用的一部分来执行,也可以用exec语句或者是内建函数eval()来执行。从整体上来看,一个python模块的代码对象,是构成该模块的全部代码。如果要执行python代码,那么该代码必须先要转换成字节编译的代码,这才是真正的代码对象。然而,它们不包含任何关于它们执行环境的信息,这便是可调用物存在的原因,它被用来包装一个代码对象并提供额外的信息。udf.fu 阅读全文
posted @ 2012-08-29 19:19 btchenguang 阅读(4448) 评论(0) 推荐(1) 编辑
摘要:Admin后台管理模块的使用Django的管理员模块是Django的标准库django.contrib的一部分。这个包还包括其它一些实用的模块:django.contrib.authdjango.contrib.sessionsdjango.contrib.comments激活admin模块的方法是:1. 在INSTALLED_APPS设置文件中,加入'django.contrib.admin'2. 再添加'django.contrib.auth','django.contrib.contenttypes''django.contrib. 阅读全文
posted @ 2012-08-29 17:20 btchenguang 阅读(24302) 评论(0) 推荐(0) 编辑
摘要:模板使用模板基本由两个部分组成,一是HTML代码,二是逻辑控制代码。逻辑控制的实现又基本由三个部分组成:1. 变量的使用{{ person_name }} #使用双大括号来引用变量2. tag的使用{% if ordered_warranty %} #使用大括号和百分号的组成来表示使用Django提供的template tag{% for item in item_list %}<li>{{ item }}</li>{% endfor %}3. filter的使用{{ ship_date|date:"F j, Y" }},ship_date变量传给d 阅读全文
posted @ 2012-08-29 17:18 btchenguang 阅读(10921) 评论(0) 推荐(0) 编辑
摘要:初识Django自称MTV框架。和传统的MVC大同小异。M指数据模型(Model),T指模板(Template),用来描述数据的展现。V指的是视图(View),并且,在Django中可以通过URL分发器对URL和View之间的映射进行配置,而View则URL分发器回调。Django发布在2005年7月,为了纪念法国爵士吉它手Django Reinhardt快速体验首先,官网下载,安装,使用命令python setup.py install验证安装成功与否,可以输入:import django看是否报错使用django命令创建一个工程文件夹目前只能输入:python D:\Python27\Li 阅读全文
posted @ 2012-08-29 17:17 btchenguang 阅读(4942) 评论(13) 推荐(3) 编辑
摘要:第一个django程序1. 创建一个django工程python D:\Python27\Lib\site-packages\django\bin\django-admin.py startproject helloworld目前windows下我只发现用这样的命令可以成功创建project。。。这样就会在当前目录下创建一个helloworld工程文件夹。2. 创建views.py文件在工程文件夹根目录创建views.py文件,其实任意文件名都可以,使用views是为了遵循传统。在里面输入:from django.http import HttpResponse#所有的views函数都需要以r 阅读全文
posted @ 2012-08-29 17:17 btchenguang 阅读(4102) 评论(1) 推荐(0) 编辑
摘要:Views,URLconf的advanced用法之前有介绍了一些views和路径匹配的基础用法,在这里介绍一些关于它们的advanced用法。URLconf技巧因为urls.py也是一个python文件,所以你可以在这个文件中使用python允许的任何语法。先看之前介绍的例子:from django.conf.urls import patterns, include, urlfrom books.views import hello, search_form, search, contact, thanksurlpatterns = patterns('',url(r' 阅读全文
posted @ 2012-08-28 20:34 btchenguang 阅读(9197) 评论(0) 推荐(5) 编辑
摘要:元类MetaClass元类是可以让你定义某些类是如何被创建的。从根本上说,赋予你如何创建类的控制权。元类也是一个类,是一个type类。元类一般用于创建类。在执行类定义时,解释器必须要知道这个类的正确的元类,如果此属性没有定义,它会向上查找父类中的__metaclass__属性。如果还没发现,就查找全局变量。对于传统类来说,它们的元类是types.ClassType。元类也有构造器,传递三个参数:类名,从基类继承数据的元组,和类属性字典下面我们来定义一个元类,要求写类的时候必须给类提供一个__str__()方法,如果没有提供__repr__()方法,则给你警告。from warnings imp 阅读全文
posted @ 2012-08-27 23:19 btchenguang 阅读(3792) 评论(2) 推荐(2) 编辑
摘要:FormsHTML form是交互网页的支柱。下面来学习一下有关使用Django处理用户提交的表单数据,验证等功能。我们将讨论HttpRequest和Form对象。request中包含的信息在views.py中的每一个用于显示页面的函数都需要以request作为第一个函数参数。request包含了一些有用的信息,如:request.path 除去了域名和端口的访问路径,request.get_host 域名+端口信息request.get_full_path() 所有路径,包含传递的参数requets.is_secure() 是否使用https进行链接还有一个特别的属性request.META 阅读全文
posted @ 2012-08-27 15:06 btchenguang 阅读(44123) 评论(3) 推荐(6) 编辑
摘要:Model使用首先安装MySQL的python连接驱动,windows下安装可下下载,对应python-2.7:https://code.google.com/p/soemin/downloads/detail?name=MySQL-python-1.2.3.win32-py2.7.exe&can=2&q=简单的,先展示在view中使用mysql数据库操作from django.shortcuts import render_to_responseimport MySQLdbdef book_list(request): db = MySQLdb.connect(user=&# 阅读全文
posted @ 2012-08-25 14:22 btchenguang 阅读(38319) 评论(5) 推荐(3) 编辑
摘要:问题描述: 随机给出一串数i, 要能够给出其中大小中间的那个数 算法描述: 一般做法,做插入排序,然后中间值在索引一半的位置,时间复杂度一般,插入排序平均时间复杂度O(n2),再找中间 值,效率不高。 这里的做法是,引入数据结构--Heap来解决问题,时间复杂度为O(logn)。 引入两个堆,max heap和 min heap来存放整数串i的两个部分,需要满足如下条... 阅读全文
posted @ 2012-05-06 10:31 btchenguang 阅读(1204) 评论(0) 推荐(0) 编辑
摘要:有问题,调试了很久也没有发现错在哪里。。。高手们,请指教源码附件:http://files.cnblogs.com/btchenguang/scc.zip概念:有向图中的强连通指的是可以相互访问到的顶点的集合,简而言之是组成环的顶点的集合,在一个有向图中可能有很多个不同的强连通部分算法思想:1. Let G be a directed graph and S be an empty stack.2. While S does not contain all vertices Choose an arbitrary vertex v not in S. Perform a depth-first 阅读全文
posted @ 2012-04-26 16:05 btchenguang 阅读(456) 评论(0) 推荐(0) 编辑