Skip to content. | Skip to navigation

Personal tools

Navigation

You are here: Home / Tips / Django Tips

Django Tips

Instagram 擁有 30億註冊用戶,已超過 32bit int 限額,都沒問題。客製化工作包括: 讓 Models 支援 Sharding,手動關閉 Garbage Collection 來提昇記憶體管理效率,在各處資料中心部署整套系統。效能改善策略包括: 開發工具來調整效能調校,使用 C/C++ 重寫部份組件,使用 Cython, asyncio。昇級到 Python3 的策略,是讓 code base 同時相容 2 和 3 拒絕引入不相容 3 的函式庫,除去不再使用的函式庫,替換不相容的函式庫。昇級過程要處理 Unicode 問題,利用 ensure_str(), ensure_binary(), ensure_text() 來檢查,要處理 pickle 的差異,利用不同 namespace 來區隔,要處理 Iterator 內容只被造訪一次的問題,轉換成 List 可改善,要處理 Dictionary 順序問題,利用 sort_keys=True 來改善。

use_for_related_fields 的運作原理 REST API DataTables

Visual Web Designer

Python From Scratch - Create a Dynamic Website

API + Dashboard: Throughput (RPM), Cache

Convert Django QuerySet to Pandas DataFrame in 跟 contains 無法併存

args = functools.reduce(operator.or_,(Q(name__icontains=i) for i in pattern))
queryset.filter(args)

django-channels 會處理 WebSockets 和 HTTP2 在內的內容,建立背景運算之類的功能,但要注意 asgi 和 wsgi 分開服務,以及資料上傳量。

Wagtail

Wagtail: How to Make Your Own Content Type Model #1 PostGIS Real Estate: OpenIMOB

$ sudo apt-get install libjpeg-deb zlib1g-dev python-pip python-virtualenv python-pil
$ virtualenv wagtail
$ cd wagtail
$ source bin/activate
$ pip install wagtail
...
Successfully installed Django-1.10.2 Pillow-3.4.1 
Unidecode-0.4.19 Willow-0.3.1 beautifulsoup4-4.5.1 
django-modelcluster-2.0 django-taggit-0.18.3 
django-treebeard-4.0.1 djangorestframework-3.4.7 
html5lib-0.999999 pytz-2016.7 six-1.10.0 wagtail-1.6.3

$ wagtail start mysite
Creating a Wagtail project called mysite
Success! mysite has been created
$ cd mysite
$ pip install -r requirements.txt
$ python manage.py migrate
$ python manage.py createsuperuser
$ python manage.py runserver

$ vi home/models.py
$ python manage.py makemigrations
$ python manage.py migrate
$ vi home/templates/home/home_page.html

啟動 ElasticSearch 服務後,就可以安裝 Python Client 並設定整合:

$ pip install elasticsearch
$ vi mysite/settings/base.py
WAGTAILSEARCH_BACKENDS = {
    'default': {
        'BACKEND': 'wagtail.wagtailsearch.backends.elasticsearch',
        'URLS': ['http://localhost:9200'],
        'INDEX': 'wagtail',
        'TIMEOUT': 5,
    }
}
$ python manage.py update_index
Updating backend: default
default: Rebuilding index wagtail
default: home.HomePage             .
default: wagtaildocs.Document      
default: wagtailimages.Image       
default: wagtailcore.Page          .
default: indexed 2 objects

demo: pyconau code

Arches

專為文化資產維護設計的系統,內含專業分類與流程模組。透過 Roadmap 了解主要特色。