Posts for: #Django

django-pipeline

一個簡單,好用的 django plugin


https://github.com/cyberdelia/django-pipeline

用途,用來產生,壓縮處理, css ,javascript 或是圖片,也可以自動處理 version (也有支援 git 喔) 可以搭配的工具很多,SAAS,LESS,或是 Coffee Script 都 OK,有沒有開始傻笑了 ;-)


Compressors

YUI Compressor compressor (這個是預設的)

Closure Compiler compressor

UglifyJS compressor

JSMin compressor

CSSTidy compressor

Write your own compressor class

Compilers

Coffee Script compiler

LESS compiler

SASS compiler

Stylus compiler

Write your own compiler class


拜託,要用時,還是看一下文件,及 source code

 文件 http://django-pipeline.readthedocs.org/en/latest/index.html

 EXAMPLE: 我先假設,用的是

Django 1.3.1
settings.py INSTALLED_APPS 有 ‘django.contrib.staticfiles’,把 ‘pipeline’,也加到 INSTALLED_APPS 裡

yuicompressor-2.4.7.jar 我放到 project 資料夾的 pkgs 目錄下面

在 Debian 上面有安裝 openjdk-7-jdk

PIPELINE_JS 的部份,依此類推

settings.py 部份

PROJECT_ROOT = BASE_DIR = os.path.abspath(os.path.dirname(file))

INSTALLED_APPS = (
‘pipeline’, # 這個要有,當然還有其他你要的
)

# django-pipeline
PIPELINE_YUI_BINARY = ‘java -jar ’ + os.path.join(PROJECT_ROOT, ‘pkgs/yuicompressor-2.4.7.jar’)
PIPELINE_VERSION = True
PIPELINE_CSS = {
‘main’: {
‘source_filenames’: (
‘css/style.css’, # 後面可以加很多
),
‘output_filename’: ‘css/pipeline_r?.css’,
’extra_context’: {
‘media’: ‘screen,projection’,
},
},
# other CSS groups goes here
}

我的 base.html 裡的部份
……
{% load compressed %}
……
…..
{% compressed_css ‘main’ %}
…..

..

覺的不合用,看更多 Django asset-managers
http://djangopackages.com/grids/g/asset-managers/

uWSGI –vhost



用 uWSGI 來啟動 wsgi 的服務,除了傳統的方式,還可以一次管理多個 wsgi 的服務

還有另外一種作法 Emperor 可以對特定資料夾裡所有的設定檔,個別管理,更適合作 PASS 服務的人, http://projects.unbit.it/uwsgi/wiki/Emperor

我的需求沒有這麼大,只是一起跑多個 wsgi ,省一些記憶體,就可以了


用 daemontools 來啟動,這裡面的 buffer-size 有要吃外部的 post back 要加大,不然,預設的實在是太小,最重要的是預設值 PayPal
IPN callback 吃不下,收到錢還不知道,夠重要了吧

#!/bin/bash
# default buffer-size is 4k 4096
exec setuidgid yourname uwsgi –buffer-size 32768 -s 127.0.0.1:3031 -p 3 -M –vhost

以在 Debian 上面的 nginx 裡面的設定範例


server {
listen 80;
server_name yourcoolsite.com;
location /static {
alias /yourstatic/folder/;
}
location / {
include uwsgi_params;
#uwsgi_pass unix:/tmp/digez.sock;
uwsgi_param UWSGI_PYTHONPATH /home/yourname;
uwsgi_param UWSGI_CHDIR /home/yourname/yourcoolsite;
uwsgi_param UWSGI_ENV DJANGO_SETTINGS_MODULE=yourcoolsite.settings;
uwsgi_param UWSGI_MODULE application;
uwsgi_pass 127.0.0.1:3031;
}


放在 /home/yourname/yourcoolsite/ 的 wsgi application.py script 範例
sys.path.append 那兩行,在 Django 1.4 以下,也就是 1.3.1 (含) 以下,都要加,比較不會有路徑的問題

Django 目前的 Dev(或是 trunk 或是 github 上面 master) 開發版,已經改變 project 的路徑,所以不用再加了

# coding: utf-8
import sys
import os
sys.path.append(os.path.abspath(os.path.dirname(file)))
sys.path.append(’..’)
os.environ[‘DJANGO_SETTINGS_MODULE’] = ‘settings’

import django.core.handlers.wsgi

application = django.core.handlers.wsgi.WSGIHandler()

Customize Django Admin actions

雖然,大大說這是一個 Design decision

也說行為不會改變

https://code.djangoproject.com/ticket/10768

http://stackoverflow.com/questions/4500924/django-admin-action-without-selecting-objects

有些時候,想簡單的整合在一起,還是要找一些洞來繞
https://github.com/django/django/blob/master/django/contrib/admin/options.py#L856

純筆記

Django 1.3 cheat sheet

整理的粉讚


SOURCE
http://www.revsys.com/django/cheatsheet/


PDF 連結 http://media.revsys.com/images/django-1.3-cheatsheet.pdf

對 Django 快速開發者來說,http://djangopackages.com/ 有點像是套件的 App 及集散地, 分析 githubbitbucket 的結果



PS: 在你可以看懂開發者的 code base 之前 , 千萬不要以為自己就了解了什麼是,快速開發,絕對不是把,需要的功能,寫成幾萬行的函式庫,然後,就以為,這輩子,就只靠,這一套來快速開發

Solr with django-haystack

Solrdjango-haystack 的組合,真是強大,全文檢索真是太優了,交給專業的就是沒錯,多得是一大堆東西,還要自己蠻幹


這樣可以解決,用 RealTimeSearchIndex 的 ManyToManyField 不更新的問題,不過變成更新資料重複 update Solr ,的 over head ,以後,應該有更好的做好

Google Group 的討論 http://groups.google.com/group/django-haystack/browse_thread/thread/a274b5aeb121b1d4/5f4c4f7632aa1dfc?pli=1




PS: 為什麼 Solr 而不是 Xapian 或是直接用 Sphinx ,考量原因是 Apache 及 GPL license 還有就是成熟度,及 Solr 提供 API ,算是一個很方便 Lucene 接口,不單可以只做資料庫的全文檢索,可以應用的範圍相當大,這就給大家自由發揮了

RESTful for Django

一個發展沒有很久,不過應該很多服務有機會用的簡單架構,最重要,可以簡單客製,算是不同於,Piston 的地方,有機會用的,可以注意一下

django-tastypie

ps: 兩個我都不喜歡的地方都是,和 model 關係太密切,要切出來,做一些,和 model 不相關的,要自己做,好像是自己太懶了

djangopackages.com



useful web site to find out reusable django app

找一些,好用的 django app 的網站,有套件的位址,還有 pypi 下載次數可以參考一下,目前好像,seo 沒有很高,寫一篇幫他加一下,以後比較好找

http://djangopackages.com/


ps: 改天應該整理一下常用好用的套件,很多公司的專案,都還用不上,有點可惜,畢竟團隊工作,最難的是溝通解釋,往往很趕的專案,都要求快,可以動就好,所以不會做太多的分析,做都沒時間了,哪來的心得分享,教育訓練,重要的是,要讀懂別的 code,除非遇到,做不出來的,才會停下來,認真的找答案



ps: Simple is hard, less is smart. and please please please….. read the code others wrote.