• Django:之ORM、CMS和二维码生成


    Django ORM

    Django 的数据库接口非常好用,我们甚至不需要知道SQL语句如何书写,就可以轻松地查询,创建一些内容,所以有时候想,在其它的地方使用Django的 ORM呢?它有这么丰富的 QuerySet API.

    settings.py

    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的信息,这样就可以运用这个数据库了。

    新建确保每个app下有一个 models.py 和 __init__.py 文件,就可以享受 Django 的 ORM 带来的便利!

    可以用 Django QuerySet API 来创建,查询,删除,修改,不用写SQL语句。

    更详细的请查看本文提供的源代码。

    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 用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之间使用,更低版本的自测,应该也没什么问题,建议按教程步骤来一遍,这样学的更好

  • 相关阅读:
    .ds_store是什么文件
    style="background-image: url(__HOMEPAGE__/views/IMJ2V2/images/banner2.jpg)"
    前段实现图片懒加载
    thinkphp路由的作用
    thinkphp跨模块调用
    关于肥胖和美国为什么那么多胖子
    php中局部变量和全局变量
    thinkphp5项目--企业单车网站(七)
    thinkphp5项目--企业单车网站(六)
    XSS攻击及防御
  • 原文地址:https://www.cnblogs.com/wulaoer/p/5399816.html
Copyright © 2020-2023  润新知