在Django中要求https连接
在对安全较高的网站中,我们要求连接必须使用ssl加密,除了在如nginx这样的HTTP服务器中做相关配置以外,可能还会涉及在Django中做安全连接的要求,即将用户的http连接重定向到https。有以下一些方法可以满足相关需求:一、中间件的使用:在Django中很容易编写自定义中间件以在请求到达视图之前被调用。下面是一个中间件的示例,其可以检测一个请求是否要求安全的连接,如果需要则进行重定向操作:from django.conf import settings
class SecureRequiredMiddlewa...
在include()上包装login_required()
在url.py里,我们可以利用include()包含其他的url.py进来,但这样默认不支持使用login_required再次包装,如下所示的代码:
...
(r'^blog/', login_required(include('blog.urls'))),
)会抛出异常。以下是一种解决方案(参考自StackOverflow):
'''
&nbs...
解决nginx上传大文件出错的问题
最近我的个人网站中增加了“最近关注”栏目,其中的音乐栏就涉及了上传大文件的问题,因为之前我未涉及过(孤陋寡闻了...),所以在部署到生产服务器后发现上传大文件会出错,并且django的一些日志中并未反应出错误。于是考虑到问题应发生在nginx上,通过查看nginx日志,发现如下错误:client intended to send too large body通过搜索发现,这是nginx默认配置上的一种限制,其默认允许客户端请求的最大的单个文件字节数为1M。于是增加一条配置:client_max_body_size = 10m(按需求设定该值)重新加载nginx配置,问题解决。
Grappelli + FileBrowser 基本安装
1.安装:pip install django-grappellipip install django-filebrowser注意: 1.grappelli和filebrowser的安装必须注意顺序; 2.如果使用的django版本为1.3,则应分别安装grappelli 2.3.9版本以及filebrowser 3.4.3版本(最新版本均不支持django1.3)。2.添加APPs:打开工程配置文件settings.py,在INSTALLED_APPS中增加: ...
&nb...
South - syncdb的替代
功能:South是django的一个的第三方App,能够检测对models的更改并同步到数据库,弥补了syncdb的一些不足,是很好的替代工具。安装:1. 使用pip安装: pip install South2. 加入到工程中: 打开settings.py,在INSTALLED_APPS中加入'south'3. 执行syncdb: python manage.py syncdb基本使用:1. 对于新建工程,在创建app之后,可以执行: python manage.py ...
DannySite v2.1 更新
新增功能与改进:1.增加“个人主页(最近关注)”,包含个性签名、网站职称以及个性分享(音乐、视频、照片)等功能;2.增加“个性主页(最近关注)”板块的内容设定页面;3.增加用户Profile,包括基本资料、个性头像上传、个性签名等设置;4.改进密码修改;5.改进部分模块的模型定义。BUG修复:1.修复密码修改的BUG;2.修复收藏夹图片加载中无图片时发生500错误的BUG;3.修复部分权限错误问题;4.修复部分页面跳转错误的问题。
Django Form 验证过程
最近在Django的Form上使用很频繁,于是花了些时间对其更深入的了解了下,以下和大家分享一下Form表单的验证过程。Django的表单验证过程分为很多步:1. 各Field数据类型验证与转换:表单验证的第一步则是从widget中获取原始数据,并根据Field所接受的数据类型进行转换,如果在此过程中发生错误,会抛出ValidationError异常。2. 各Field的内置clean()方法验证:这一步会根据先前的验证结果返回数据,如果验证通过则返回clean data,如果失败则抛出异常。3. clean_<fieldname>()方法:这一步是用户自定义的验证步骤,用以...
深入Django ORM的继承关系
本文为转载内容,查看来源。ORM中通常将对象引用映射到外键,但是对于继承,关系数据库中没有自然有效的方法来对应。从数据存储的角度来看,在映射继承关系时,可以采用几种方式(参考JPA中的InheritanceType.定义):1. 使用单个表,在JPA中称作SINGLE_TABLE。整个继承树共用一张表。使用唯一的表,包含所有基类和子类的字段;2. 每个具体类一张表,在JPA中称作TABLE_PER_CLASS。这种方式下,每张表都包含具体类和继承树上所有父类的字段。因为多个表中有重复字段,从整个继承树上来说,字段是冗余的;3. 每个类一张表,继承关系通过表的JOIN操作来表示。在JPA中...
Django Model中基于时间的筛选(续)
在昨天的写《Django Model中基于时间的筛选》一文中,我写到可以使用published_date__range来提取某个时间段内的所有数据,那就想到这样一个需求:如果要筛选出某月内的所有数据应该怎么做呢?如果采用写死的方式,如:start_date = datetime.date(2012, 12, 1)end_date = datetime.date(2012, 12, 31)blog.objects.filter(published_date__range=(start_date, end_date))这样的局限在于如果月中的天数是不定的,我们必须基于给定的月份找到其头和尾。...
Django Model中基于时间的筛选
在Django的Model中,可以基于时间对数据进行筛选,并且可以有很多的筛选方法供选择使用。1.published_date__gt:筛选出大于某个时间的所有数据。time_point = datetime.datetime.now() - datetime.timedelta(days=-1)result = blog.objects.filter(published_date__gt=time_point)2.published_date__gte:筛选出大于等于某个时间的所有数据。 time_point = datetime.datetime.now() - date...