今天做注册的验证码,里面有一个问题就是,建立一个隐藏input表单。我想用这个input存储验证码的验证信息,又不想太依赖javascript修改。接着我想伟大的django会有这个的,哈哈被我找到了,见官网:
https://docs.djangoproject.com/en/1.4/ref/forms/widgets/#hiddeninput
之所以放在froms.py中而不放在templates中,我想验证码的错误判断放在clean_验证码中,在forms中直接从request.POST中获取不会T_T,试了下没成功。
随着对django的了解,越发发现他的方便。看我写的代码
key = forms.CharField(widget=forms.HiddenInput(attrs={'value':''}))
Read more...
Archive for django
django的几个应用小技巧
早上在网上搜索到的,记录下,以后肯定会用到。
一、
LOGIN_URL的修改,在views里可能需要设置 限制登陆用户访问。用到@login_required,如果和登陆url不同需要设置login_url参数。但是在urls中我还没有找到好的方法,当我们用系统提供的views里的方法,像django.contrib.auth.views.password_change,这是修改LOGIN_URL就方便了,@login_required也不需要设置参数了,当然最好登陆url与默认的相同。
网上的方法,我还没有验证(像是老版本的用法),不过官网有介绍:
Read more...
import django.contrib.auth
django.contrib.auth.LOGIN_URL = '/login/'
官网链接:
https://docs.djangoproject.com/en/1.4/ref/settings/
二、
在urls里设置传给templates数据的方法,这个以前没有用过。
先记录:
( r'^reset_done/$' , 'django.views.generic.simple.direct_to_template' , { 'template' : 'message.html' , 'extra_context' : {
'msg' : _( u'我们已将一封包含恢复密码步骤的邮件发到了您的邮箱,请查收' ),
}}),
django发送重置密码链接邮件进行密码修改
第二次进行python用户注册登录等功能的编写,收获颇多,对django认识更多。
urls.py
Read more...
#passwd reset
url(r'^resetpassword/$','django.contrib.auth.views.password_reset',{'template_name':'account/resetpassword.html','email_template_name':'account/password_reset_mail.html','subject_template_name':'accouts/password_reset_subject.txt','post_reset_redirect':'/',}),
#密码重置链接
url(r'^reset/(?P[0-9A-Za-z]+)-(?P.+)/$', 'django.contrib.auth.views.password_reset_confirm', {'template_name' : 'account/password_reset.html','post_reset_redirect': '/account/logout/' }),
#passwd change
开始没有写密码重置链接的url配置,报错:
Exception Value: Caught NoReverseMatch while rendering: Reverse for'django.contrib.auth.views.password_reset_confirm' with arguments '()'and keyword arguments '{'uidb36': '4', 'token':'36x-7d6e7419555fda3bc140'}' not found.
参数的详细讲解:https://docs.djangoproject.com/en/1.4/topics/auth/
registration/password_reset_email.html可以直接复制django自带的那个文件,文件地址:
/usr/local/lib/python2.6/dist-packages/django/contrib/admin/templates/registration/password_reset_email.html
小工具文档加密工具
方便自己手机记录,而且不需要导出到电脑保存,直接存到sae上了。主要记录自己的很多很突然的想法,用的sae的kvdb顺便参加了sae的活动,能拿1000个豆子。
文档的加密算法是自己写的,主要通过密码的长度和字符,密码又经过md5加密了。虽然没有达到自己预想的样子,
地址:http://0x55aatools.sinaapp.com/text/
还是用的django和twitter bootstrap ,写小工具很快。
python sae的KVDB不支持pkrget 按key前缀查找,只好自己遍历了所有文档进行后台文档的管理,url就是进行了简单的md5加密,这个写的时候应该加大难度。
Read more...
sae-python使用django1.4搭建网站
几个需要注意的地方,官网说的很清楚:
1、 config.yaml文件修改,
Read more...
name: py version: 1 libraries: - name: django version: "1.4" handlers: - url: /static static_dir: static2、index.wsgi文件修改,
import os
import django.core.handlers.wsgi
import sae
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
application = sae.create_wsgi_app(django.core.handlers.wsgi.WSGIHandler())
之后就打印了一个hello world!
用到的几个svn命令
svn checkout https://svn.sinaapp.com/newapp #此处需要认证,用户名/密码为您的SAE安全邮箱和安全密码
svn add 1/
svn commit -m"add wordpress"
ubuntu卸载django1.3.1安装django1.4
官网资料:https://docs.djangoproject.com/en/dev/topics/install/#installing-development-version
1、找到django安装目录,官网提供的方法:python -c "import sys; sys.path = sys.path[1:]; import django; print(django.__path__)"
当然可以在终端 进入python,寻找。
2、直接删除目录下的django文件夹。
3、安装django1.4新版本。按照官网方法就ok。
开始找的site-packages目录,发现是空的,后来才知道,改成dist-packages。从django官网下载文件速度慢死,第一次下载没下载完就结束了,安装没成功。
Read more...
django 前端代码的自定义
今天django群里的一个程序员问:“django的类试图,虽然代码更为简洁,但是是不是前端的可以定制性也降低了呢?”
不懂神马是类视图,不过只要制定,我就想到自己,从学习django到现在前端是肿么做的。
开始的时候就想用twitter bootstrap整前端,这样方便的多,但问题很明显,与django的前端显示代码不容易整合,特别是forms。因为开始时我只会用{{ form.as_table }}等,后来看了官网的forms的定制。
有了定制,基本的问题都解决了,但是还是有不方便的。像我把admin里的时间插件移动到了前端。这个我没有办法正好,不过我测试过了,用{{from}}在浏览器直接生成的代码放到template里,就管用。哈哈,这次可以方便的使用了。
不过这样的坏处也很明显,以后的维护会很麻烦。
与群里的说的也是这样,不知道对他有没有帮助。他还说还有一个函数视图,这个标记,以后搜索看看什么意思。
Read more...
django发送json数据并格式化datetime时间数据风波二
有点无语哇,没有基础直接“跑”就是这种结果。前面写的一篇《django发送json数据并格式化datetime时间数据》,今天晚上用ie8突然发现哇T_T,Date没转换过来,急哭了。原因是前面测试很长时间是在ubuntu下做的,这次回家了,用的windows。发现测试很重要。
正题:是转换的日期字符串格式不正确。开始群里告诉我是浏览器的原因,还真找到几篇文章,但发现没用。重新搜索javascript 的Date参数格式,挨个在两个浏览器里的控制台测试,终于找到了。。。T_T泪奔~
再次搜索python strftime 格式化,修改。测试。通过了~\(≧▽≦)/~
记录:
几种datetime格式,测试了第一个,并使用:
Read more...
var someDate=new Date("Month dd,yyyy hh:mm:ss");
var someDate=new Date("Month dd,yyyy")
var someDate=new Date(yy,mm,dd,hh,mm,ss)
var someDate=new Date(GMT milliseconds from 1/1/1970)
strftime 格式化记录,防止再次搜索:
%a 星期几的简写 Weekday name, abbr.
%A 星期几的全称 Weekday name, full
%b 月分的简写 Month name, abbr.
%B 月份的全称 Month name, full
%c 标准的日期的时间串 Complete date and time representation
%d 十进制表示的每月的第几天 Day of the month
%H 24小时制的小时 Hour (24-hour clock)
%I 12小时制的小时 Hour (12-hour clock)
%j 十进制表示的每年的第几天 Day of the year
%m 十进制表示的月份 Month number
%M 十时制表示的分钟数 Minute number
%S 十进制的秒数 Second number
%U 第年的第几周,把星期日做为第一天(值从0到53)Week number (Sunday first weekday)
%w 十进制表示的星期几(值从0到6,星期天为0)weekday number
%W 每年的第几周,把星期一做为第一天(值从0到53) Week number (Monday first weekday)
%x 标准的日期串 Complete date representation (e.g. 13/01/08)
%X 标准的时间串 Complete time representation (e.g. 17:02:10)
%y 不带世纪的十进制年份(值从0到99)Year number within century
%Y 带世纪部分的十制年份 Year number
%z,%Z 时区名称,如果不能得到时区名称则返回空字符。Name of time zone
%% 百分号
django中的filter查询含有列表中的值
正确查询语句:
articles_list = Articles.objects.filter(group__in= group_list).order_by('-id')[0:16]
group_list是一个group对象列表。开始,用的下面这个查询语句:
articles_list = Articles.objects.filter(group in group_list).order_by('-id')[0:16]
发现不行,然后想用for循环,然后将QuerySet进行合并。搜索没有找到好用的方法进行QuerySet的合并。
查看官方文档,Django QuerySet API 帮助文档:https://docs.djangoproject.com/en/1.3/ref/models/querysets/
发现正确方法。其实可以想到,像gt,lt等的用法可以想象到in的用法。
Read more...
django发送json数据并格式化datetime时间数据
用了一个javascript的插件,json传送过来的时间需要是Date对象类型的开始的思路就错了,以为可以直接返回这种类型的数据。差,天真了。后来又看到直接返回含有js语句的json文本,非常不喜欢。就想能不能转成js中Date能识别的格式,哈哈果然有。方法如下:
我用的 ,用json也行哇。views.py里的代码
Read more...
from django.utils import simplejson
li = []
for a in articles:
article={}
article["start"] = a.datetime.strftime('%Y-%m-%dT%H:%M:%S')
article["content"] = a.content
li.append(article)
json = simplejson.dumps(li)
return HttpResponse(json)
其中strftime('%Y-%m-%dT%H:%M:%S') 是格式化为Date对象格式的字符串,方便在浏览器的javascript中转换为Date对象.
html文件比较简单判断json的长度 循环变成Date对象,jsvascript
var i=0;
for(i=0;i
《django发送json数据并格式化datetime时间数据风波二》