Archive for django

配置的官方文档:http://docs.mongoengine.org/en/latest/django.html,安装的过程就不记了。 主要碰到的问题: 在按照文档配置完settings.py后,我写了登录代码。发现提示错误: settings.DATABASES is improperly configured. Please supply the ENGINE value. Check settings documentation for more details. 这个明显说databases配置错误。但是我准确对照配置没问题,然后从网上找资料也没有结果。 然后我又看mongoengine里面的auth,还是不知道问题在哪里。然后我又找django的auth模块,突然想到: 肯定是调用这里出的错啊,然后我看浏览器显示错误的backtrack。 <code>/usr/local/lib/python2.7/dist-packages/django/contrib/auth/views.py</code> in <code>login</code>

Continue

以前都是用的django定义的user model,不用的字段也都这么放着,显然很不科学。 今天就看着一下文档,找到了方法,但是还是没用。。 https://docs.djangoproject.com/en/1.5/topics/auth/customizing/ 最彻底的修改settings的auth_user_model来指定user的model。

Continue

需要一个settings文件template-context-processors的配置:https://docs.djangoproject.com/en/1.5/ref/settings/#template-context-processors官网文档有默认配置,本身生成的settings文件没有这个定义,使用默认配置。 然后多添加一行: <pre><code>'django.core.context_processors.request', 就ok了</code></pre> &nbsp;

Continue

错误主要是在forms.py里面,想添加text文本编辑框,然后写了一个forms.TextField().....这不是重点,重点是我把views里的代码也写完,访问调试的时候,django页面提示View does not exist in module news.views。 views.py文件是一定存在的,不知道错在哪里。googel关键字找到so上说,用manage.py shell会提供更多信息。然后我再shell里导入views ,发现报前边的错误。修改,运行,然后正常了。

Continue

先说说我以前的做法:models.py里单纯的就是几个表,几个字段;forms.py里除了除了form的定义,把form数据的验证也放到这里来;view.py里是剩下的所有东西。 现在的想法(还没做):在models.py里面的类加上一些简单的处理方法,比如获取相关分类表里面的名称。forms.py里面加上save操作。 以前在django群里讨论过这个问题,大牛说逻辑处理最好不要放到views里面。这次写程序,又多瞅了几眼文档,感觉这样的好处确实很多,程序更容易读懂,减少代码行数,提高了代码复用,views.py文件肯定更加清晰。 &nbsp;

Continue

django中csrf的验证: Django是在post中有一个字段<code>CsrfViewMiddleware</code> 进行相关验证,验证过程很简单,从Cookie中拿出token,然后从POST中拿出<code>csrfmiddlewaretoken</code>,然后块俩做一个字符匹配。因为恶意网站无法读取你的Cookie(因为浏览器的同源策略),所以无法获得Cookie里的CSRF Token,无法伪造出csrf,POST就会失败,这样就不会产生安全问题。 ajax提交post表单时,从网上找到一个感觉不错的方法记录。 <pre lang="javascript">function getCookie(sName){ var aCookie=document.cookie.split("; "); for(var i=0;i&lt;aCookie.length;i++){var aCrumb=aCookie[i].split("=");if(sName==aCrumb[0]) return(aCrumb[1]);}return null;}</pr

Continue

很简单的代码,记录一下。 <pre lang="python"> import Image image = Image.open('a.jpg') import cStringIO buf = cStringIO.StringIO() image.save(buf, image.format,quality=75) data = buf.getvalue() a = u.writeFile('/this/logo.jpg',data,True) </pre> 应用在 使用django,用户上传图片后,将图片转存到别的服务器。但是转存需要对图片进行处理,但是quality设定的保存,不知道可不可以在不是image.save()的时候。写的这个是保存时放到内存,然后直接提交到图片服务器。

Continue

当需要将上传的文件保存到别的服务器,而又不修改views里的代码,下面可能对你有点用。 Python26\Lib\site-packages\django\core\files\storage.py 这个文件里有一个FileSystemStorage类,类里的函数_save()进行了上传文件的保存。先上代码: <pre lang="python"> def _save(self, name, content): full_path = self.path(name) print full_path,name # Create any intermediate directories that do not exist. # Note that there is a race between os.path.exists and os.makedirs: # if os.makedirs fails with EEXIST, the directory was created

Continue

配置文件settings.py: <pre lang="python"> if 'SERVER_SOFTWARE' in os.environ: from bae.core import const DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'XXX', 'USER': const.MYSQL_USER, 'PASSWORD': const.MYSQL_PASS, 'HOST': const.MYSQL_HOST, 'PORT': const.MYSQL_PORT, } } else: DATABASES = { 'default': { 'ENGINE': 'django.db.backe

Continue

先记录一个无意在官网看到的有用的知识,不过没有测试,官网介绍很清楚。 先写地址:https://docs.djangoproject.com/en/1.4/ref/forms/widgets/#selectdatewidget 前面记录文章《<a href="http://0x55aa.sinaapp.com/%E7%AE%97%E6%B3%95-%E7%BC%96%E7%A8%8B/335.html">django 前端时间控件移植记录</a>》是将后台的功能移植到前台,现在可以直接创建SelectDateWidget forms进行设计了。 具体的效果我也没有试过,先记录。 说正题: 先上官网链接:https://docs.djangoproject.com/en/1.4/ref/forms/api/#django.forms.Form.initial f = ContactForm(initial={'subject': 'Hi there!'}) 后面再补充初始化form数据的代码。

Continue