10 2012 档案
摘要:在Windows平台工作的时候,每每遇到和网络开发相关的内容,都会借助Windows Network Monitor的帮助,到了Linux一时无所适从。好在今天发现了一个超棒的工具:Wireshark。在官方网站上没有发现二进制包,需要自己按照标准的源码方式安装。首先从下边的地址下载源码:http://www.wireshark.org/download.html解压后执行./configure & make &sudo make install即可。在我的Fedora上,执行上述命令后被安装到/usr/local/bin目录。需要说明的是,如果要抓取网络包,可能需要root权
阅读全文
摘要:Kmail的身份验证机制需要一组库的支持,分别是:cyrus-sasl.x86_64 : The Cyrus SASL librarycyrus-sasl-devel.i686 : Files needed for developing applications with Cyrus SASLcyrus-sasl-devel.x86_64 : Files needed for developing applications with Cyrus : SASLcyrus-sasl-gssapi.i686 : GSSAPI authentication...
阅读全文
摘要:使用Python的包管理器pip安装m2crypto提示错误error command 'swig' failed with exit status 1 。这是一个很具有迷惑性,且非常不准确的错误提示。使用pip安装属于源码编译方式,需要实现将其所依赖的库安装之后,才能正常编译。m2crypto依赖以下库:openssh-develgccswig搞清楚了这些,编译前事先使用yum工具安装即可。sudo yum install gccsudo yum install openssh-develsudo yum install swig在fedora中,可能还会遇到"&q
阅读全文
摘要:有时候我们想在ModelForm之上增加几个字定义的字段,或者期望在一个页面上让用户同时填写两个表(model)的内容——比如某些1:1关系中,希望用户同时输入两个模型数据,后台同步保存。通过分析modelform的代码,其实可以非常轻松的达到我们的目标。简单地说,这涉及到字段定义、数据初始化和数据保存三个层面的内容。字段定义与普通的form的字段定义一样,新增的自定义控件也会自动加入到form的数据验证规则,这没什么可说的;数据初始化的部分,只需要在form的"初始化函数"中通过initial赋值即可: def __init__(self,data=None, files
阅读全文
摘要:前文(Django分多此渲染(输出)同一个form)提到一个集成bootstratp_toolkit的方案,实际使用过程中发现其性能非常之差。开始怀疑是因为render_fields字段筛选导致,经排查问题不在这里,后来怀疑是模板渲染的性能,但直接使用bootstrap_toolkit并未表现出性能问题。仔细研究了as_bootstrap的源代码,上文提到的方法在使用这个方法是逐个字段调用,每次调用都会进行一次模板的查找与编译过程因而性能就受到了严重的映像;而通常在模板上我们是将一个form传递进去,只做一次模板查找与编译,因而就不会产生问题。修改方法也非常简单,只要缓存Template对象,
阅读全文
摘要:Django中在模板上通过{{form}}即自动可生成表单内容,提供了非常便捷和强大的功能。这种功能虽然强大,但却不能满足很多的需求,比如一个表单的内容非常多,在页面上希望通过Tab将信息"分门别类"的隔开,Django内置的功能就无能为力了。好在Django是开源产品,可以通过修改其代码,为其增加自定义输出字段的能力,即可很方便的达到目的。主要修改form的.as_table,as_ul,as_p等方法,为其增加一个待渲染字段列表即可。为了确保Django后续平滑升级,一般我们不会直接修改Django代码,借助Python的多重继承机制,可以非常轻松的为Django打上这
阅读全文
摘要:如果只是修改widget的默认属性可以采用如下方法:from django import formsfrom django.contrib.auth.models import User class UserForm(forms.ModelForm): def __init__(self, *args, **kwargs): super(UserForm, self).__init__(*args, **kwargs) # change a widget attribute: self.fields['user_permissions'].wid...
阅读全文
摘要:在数据维护类应用中,一般的做法是首先会显示一个列表页,用户可以选择列表页中的某一个数据进行操作。比如修改的处理,用户选中一个数据项后,应用会引导用户到数据修改页面,修改完毕后再返回列表页。Django已经内置了很多有用的功能帮我们实现类似的功能。使用ListView显示数据列表,使用UpdateView实现数据修改功能....但是如果列表页是一个分页的数据,修改后应该返回到修改前的那一页才好。这时候使用Django内置的功能就不能满足要求了,所幸只需稍加调整即可:首先,我们来在修改页面的模板中,增加一个隐含字段,记录上一个url:<input type="hidden"
阅读全文

浙公网安备 33010602011771号