Django:之ORM、CMS和二維碼生成

Django ORMhtml

Django 的數據庫接口很是好用,咱們甚至不須要知道SQL語句如何書寫,就能夠輕鬆地查詢,建立一些內容,因此有時候想,在其它的地方使用Django的 ORM呢?它有這麼豐富的 QuerySet API.python

settings.pygit

import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
SECRET_KEY = 'at8j8i9%=+m@topzgjzvhs#64^0&qlr6m5yc(_&me%!@jp-7y+'
 
INSTALLED_APPS = (
    'test',
)
# Database
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

在這個文件中寫上 SQLite, MySQL或PostgreSQL的信息,這樣就能夠運用這個數據庫了。github

新建確保每一個app下有一個 models.py 和 __init__.py 文件,就能夠享受 Django 的 ORM 帶來的便利!sql

能夠用 Django QuerySet API 來建立,查詢,刪除,修改,不用寫SQL語句。數據庫

更詳細的請查看本文提供的源代碼。django

Django CMS編程

CMS 的意思是 Content Management System 內容管理系統,通常拿就可使用,不會編程也能作出網站來,還能夠在原來的基礎上再次開發,減小工做量,這裏列舉了一些出名的 CMS:瀏覽器

  • Opps - A content management platform built for large portals.緩存

  • django-cms - The easy-to-use and developer-friendly CMS.

    這個不是爲初學者開發的,想在基礎上開發須要對Django比較瞭解才行,是一個基本的框架。

  • mezzanine - A content management platform built using the Django framework.

    簡單易用,自帶Blog和用戶註冊系統,拿來就能夠用

  • wagtail - A new Django content management system.

  • django-fiber - Django Fiber, a simple, user-friendly CMS for all your Django projects

Python/Django 生成二維碼

1、包的安裝和簡單使用

1.1 用Python來生成二維碼很簡單,能夠看 qrcode 這個包:

pip install qrcode

qrcode 依賴 Image 這個包:

pip install Image

若是這個包安裝有困難,可選純Python的包來實現此功能,見下文。

1.2 安裝後就可使用了,這個程序帶了一個 qr 命令:

qr 'http://www.wulaoer.com' > test.png

1.3 下面咱們看一下如何在 代碼 中使用

import qrcode
 
img = qrcode.make('http://www.wulaoer.com')
# img <qrcode.image.pil.PilImage object at 0x1044ed9d0>
 
with open('test.png', 'wb') as f:
    img.save(f)

這樣就能夠生成一個帶有網址的二維碼,可是這樣得把文件保存到硬盤中。

【備註】:純Python的包的使用:

安裝:

pip install git+git://github.com/ojii/pymaging.git#egg=pymaging
pip install git+git://github.com/ojii/pymaging-png.git#egg=pymaging-png

使用方法大體相同,命令行上:

qr --factory=pymaging "Some text" > test.png

Python中調用:

import qrcode
from qrcode.image.pure import PymagingImage
img = qrcode.make('Some data here', image_factory=PymagingImage)

二,Django 中使用

咱們能夠用 Django 直接把生成的內容返回到網頁,如下是操做過程:

2.1 新建一個 zqxtqrcode 項目,tools 應用:

django-admin.py startproject zqxtqrcode
python manage.py startapp tools

2.2 將 tools 應用 添加到 項目 settings.py 中

INSTALLED_APPS = (
     
    ...
     
    'tools',
)

2.3 咱們修改 tools/views.py

from django.http import HttpResponse
import qrcode
from cStringIO import StringIO
 
 
def generate_qrcode(request, data):
    img = qrcode.make(data)
 
    buf = StringIO()
    img.save(buf)
    image_stream = buf.getvalue()
 
    response = HttpResponse(image_stream, content_type="image/png")
    response['Last-Modified'] = 'Mon, 27 Apr 2015 02:05:03 GMT'
    response['Cache-Control'] = 'max-age=31536000'
    return response

上面對返回結果進行了處理,瀏覽器會緩存圖片,提升再次加載的速度。Cache-Control 和 Last-Modified 不懂的能夠看一下 HTTP協議 相關知識。

2.4 添加視圖函數到 zqxtqrcode/urls.py

url(r'^qrcode/(.+)$', 'tools.views.generate_qrcode', name='qrcode'),

2.5 同步數據庫,打開開發服務器:

python manage.py syncdb
python manage.py runserver

打開:http://127.0.0.1:8000/qrcode/http://www.wulaoer.com 就能夠看到以下效果:

這樣生成 二維碼的接口就寫好了 ^_^,實例採用的是返回圖片流的方式,這樣不用寫文件到硬盤,接口調用更方便,若是要加速,能夠用Django緩存來實現。

源代碼下載:

基於 Django 1.8,tools app 能夠在 Django 1.4-Django1.8之間使用,更低版本的自測,應該也沒什麼問題,建議按教程步驟來一遍,這樣學的更好

相關文章
相關標籤/搜索