Archive for django

django 今天做注册的验证码,里面有一个问题就是,建立一个隐藏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':''}))

Continue

早上在网上搜索到的,记录下,以后肯定会用到。 一、 LOGIN_URL的修改,在views里可能需要设置 限制登陆用户访问。用到@login_required,如果和登陆url不同需要设置login_url参数。但是在urls中我还没有找到好的方法,当我们用系统提供的views里的方法,像django.contrib.auth.views.password_change,这是修改LOGIN_URL就方便了,@login_required也不需要设置参数了,当然最好登陆url与默认的相同。 网上的方法,我还没有验证(像是老版本的用法),不过官网有介绍:

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'我们已将一封包含恢复密码步骤的邮件发到了您的邮箱,请查收' ),
}}), 

Continue

第二次进行python用户注册登录等功能的编写,收获颇多,对django认识更多。 urls.py

    #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

Continue

方便自己手机记录,而且不需要导出到电脑保存,直接存到sae上了。主要记录自己的很多很突然的想法,用的sae的kvdb顺便参加了sae的活动,能拿1000个豆子。 文档的加密算法是自己写的,主要通过密码的长度和字符,密码又经过md5加密了。虽然没有达到自己预想的样子, 地址:http://0x55aatools.sinaapp.com/text/ 还是用的django和twitter bootstrap ,写小工具很快。 python sae的KVDB不支持pkrget 按key前缀查找,只好自己遍历了所有文档进行后台文档的管理,url就是进行了简单的md5加密,这个写的时候应该加大难度。

Continue

几个需要注意的地方,官网说的很清楚: 1、 config.yaml文件修改,

name: py
version: 1

libraries:
- name: django
  version: "1.4"
handlers:
- url: /static
  static_dir: static
2、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"

Continue

官网资料: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官网下载文件速度慢死,第一次下载没下载完就结束了,安装没成功。

Continue

今天django群里的一个程序员问:“django的类试图,虽然代码更为简洁,但是是不是前端的可以定制性也降低了呢?” 不懂神马是类视图,不过只要制定,我就想到自己,从学习django到现在前端是肿么做的。 开始的时候就想用twitter bootstrap整前端,这样方便的多,但问题很明显,与django的前端显示代码不容易整合,特别是forms。因为开始时我只会用{{ form.as_table }}等,后来看了官网的forms的定制。 有了定制,基本的问题都解决了,但是还是有不方便的。像我把admin里的时间插件移动到了前端。这个我没有办法正好,不过我测试过了,用{{from}}在浏览器直接生成的代码放到template里,就管用。哈哈,这次可以方便的使用了。 不过这样的坏处也很明显,以后的维护会很麻烦。 与群里的说的也是这样,不知道对他有没有帮助。他还说还有一个函数视图,这个标记,以后搜索看看什么意思。

Continue

有点无语哇,没有基础直接“跑”就是这种结果。前面写的一篇《django发送json数据并格式化datetime时间数据》,今天晚上用ie8突然发现哇T_T,Date没转换过来,急哭了。原因是前面测试很长时间是在ubuntu下做的,这次回家了,用的windows。发现测试很重要。 正题:是转换的日期字符串格式不正确。开始群里告诉我是浏览器的原因,还真找到几篇文章,但发现没用。重新搜索javascript 的Date参数格式,挨个在两个浏览器里的控制台测试,终于找到了。。。T_T泪奔~ 再次搜索python strftime 格式化,修改。测试。通过了~\(≧▽≦)/~ 记录: 几种datetime格式,测试了第一个,并使用:

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 %% 百分号

Continue

正确查询语句: 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的用法。

Continue

用了一个javascript的插件,json传送过来的时间需要是Date对象类型的开始的思路就错了,以为可以直接返回这种类型的数据。差,天真了。后来又看到直接返回含有js语句的json文本,非常不喜欢。就想能不能转成js中Date能识别的格式,哈哈果然有。方法如下: 我用的 ,用json也行哇。views.py里的代码

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;idjango发送json数据并格式化datetime时间数据风波二

Continue