欢迎大家访问我的主页:www.liujiangblog.com


第一部分传送门

第二部分传送门

第三部分传送门

3.2 模型和数据库Models and databases

3.2.2 查询操作making queries

3.3.8 会话sessions

2.10 高级教程:如何编写可重用的apps

2.10.1 重用的概念

The Python Package Index (PyPI)有大量的现成可用的Python库。https://www.djangopackages.com

作为Django的app基地也有大量现成可用的apps。

包?App?
包是python重用代码的方式,以目录的形式体现,需要包含__init__.py文件,采用import的方式导入。
app则是Django专用的包,包含一些通用的Django组件,例如models、tests、urls和views等子模块。

2.10.2 你的项目和可重用的app

通过前面的教程,你的项目结构如下:

mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
wsgi.py
polls/
__init__.py
admin.py
migrations/
__init__.py
0001_initial.py
models.py
static/
polls/
images/
background.gif
style.css
templates/
polls/
detail.html
index.html
results.html
tests.py
urls.py
views.py
templates/
admin/
base_site.html

它已经具备的project和app分离的条件。但是还需要一个打包的过程。

2.10.3 安装一些必要工具

使用setuptools和pip来打包我们的app。请先安装他们。

https://pypi.python.org/pypi/setuptools

https://pypi.python.org/pypi/pip

2.10.4 打包你的app

打包的意思是让你的app具有一种特殊的格式,使得它更容易被安装和使用。

  1. 首先,在Django项目外面,为你的polls应用,准备一个父目录,取名django-polls;

    为你的app选择一个合适的名字:

    在取名前,去PYPI搜索一下是否有重名或冲突的包已经存在。建议给包名加上“django-”的前缀。名字中最后一个圆点的后面部分在INSTALLED_APPS中一定要独一无二,不能和任何Django的contrib packages中的重名,例如auth、admin、messages等等你。

  2. 拷贝polls目录到该目录内;

  3. 创建一个文件django-polls/README.rst,写入下面的内容:

Polls

Polls is a simple Django app to conduct Web-based polls. For each
question, visitors can choose between a fixed number of answers.
Detailed documentation is in the "docs" directory.
Quick start
-----------
64 Chapter 2. Getting started
Django Documentation, Release 1.10.2a1
1. Add "polls" to your INSTALLED_APPS setting like this::
INSTALLED_APPS = [
...
'polls',
]
2. Include the polls URLconf in your project urls.py like this::
url(r'^polls/', include('polls.urls')),
3. Run `python manage.py migrate` to create the polls models.
4. Start the development server and visit http://127.0.0.1:8000/admin/
to create a poll (you'll need the Admin app enabled).
5. Visit http://127.0.0.1:8000/polls/ to participate in the poll.
  1. 创建一个django-polls/LICENSE版权申明文件。大多数Django相关的app都基于BSD版权。
  2. 接下来创建一个setup.py文件,用于编译和安装app。如何创建这个,请前往setuptools的官方文档获取详细的教程,本文不涉及。具体内容如下:

django-polls/setup.py

import os
from setuptools import find_packages, setup with open(os.path.join(os.path.dirname(__file__), 'README.rst')) as readme:
README = readme.read() # allow setup.py to be run from any path
os.chdir(os.path.normpath(os.path.join(os.path.abspath(__file__), os.pardir))) setup(
name='django-polls',
version='0.1',
packages=find_packages(),
include_package_data=True,
license='BSD License', # example license
description='A simple Django app to conduct Web-based polls.',
long_description=README,
url='https://www.example.com/',
author='Your Name',
author_email='yourname@example.com',
classifiers=[
'Environment :: Web Environment',
'Framework :: Django',
'Framework :: Django :: X.Y', # replace "X.Y" as appropriate
'Intended Audience :: Developers',
'License :: OSI Approved :: BSD License', # example license
'Operating System :: OS Independent',
'Programming Language :: Python',
# Replace these appropriately if you are stuck on Python 2.
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Topic :: Internet :: WWW/HTTP',
'Topic :: Internet :: WWW/HTTP :: Dynamic Content',
],
)
  1. 默认只有python的模块和包会被打包进我们的app内。为了包含一些附加的文件,需要创建一个MANIFEST.in文件。为了将静态文件,模板等等非python语言编写的文件打包入内,我们需要在django-polls/MANIFEST.in文件内写入:
    include LICENSE
include README.rst
recursive-include polls/static *
recursive-include polls/templates *
  1. 该步骤可选,但是强烈推荐,将详细的说明文档一起打包。创建一个空的目录django-polls/docs,用于放置你的app相关文档。同时不要忘了,在django-polls/MANIFEST.in文件内写入一行recursive-include docs *。需要注意的是,如果docs目录是空的,那么它不会被打包进去。当然,许多apps通过在线的网站提供文档阅读。
  2. 在你的django-polls目录内,运行python setup.py sdist命令。这将会创建一个dist目录,并编译成功你的新包,django-polls-0.1.tar.gz。

2.10.5 使用你自己的包

在安装包的时候,最好是以个人身份安装,而不是全系统范围的身份。这样可以有效减少给别的用户带去的影响或被别的用户影响。当然,最好的方式是在virtualenv环境下,类似隔离的沙盒环境。

  1. 使用pip安装:pip install --user django-polls/dist/django-polls-0.1.tar.gz
  2. 现在你可以在项目中使用这个包了
  3. 卸载:pip uninstall django-polls

2.10.6 发布你的app

你可以:

  • 通过邮件的形式发送给朋友
  • 上传包到你的网站
  • 推送到一个公开的仓库,例如PyPI,github等

https://packaging.python.org/distributing/#uploading-your-project-to-pypi是如何上传到PyPI的教程。

2.10.7 如何在virtualenv中安装python的包

前面,我们安装polls应用作为一个用户库,它有一些缺点:

  • 修改用户库会影响到你系统上的其它Python软件
  • 你无法同时运行此包的多个版本

解决这个问题最好的办法就是使用virtualenv。详见https://virtualenv.pypa.io/en/stable/

2.11 接下来学什么

本节主要介绍Django文档的划分,各部分的侧重点,如何找到自己感兴趣的内容。

由于此部分和文档最前面的目录导航重复较多,并且比较简单,就不翻译了。

2.11.1 在文档中查找

2.11.2 文档是如何组织的

2.11.3 文档是如何更新的

2.11.4 从哪里获取文档

2.11.5 不同版本之间的区别

2.12 编写你的第一个Django补丁

**待翻译!**

“全能”选手—Django 1.10文档中文版Part4的更多相关文章

  1. “全能”选手—Django 1.10文档中文版Part1

    本文是博主翻译的Django1.10版本官方文档的第一部分,如时间充裕,争取一直翻译下去,经验不足,或有错漏,敬请指正. 另外对于公开文档进行翻译的版权问题不是很清楚,如有侵权请联系我! 另外,要转载 ...

  2. “全能”选手—Django 1.10文档中文版Part3

    Django 1.10官方文档的入门教程已经翻译完毕,后续的部分将不会按照顺序进行翻译,而是挑重点的先翻译. 有兴趣的可以关注我的博客. 第一部分传送门 第二部分传送门 第四部分传送门 3.2 模型和 ...

  3. “全能”选手—Django 1.10文档中文版Part2

    第一部分传送门 第三部分传送门 第四部分传送门 3.2 模型和数据库Models and databases 3.2.2 查询操作making queries 3.3.8 会话sessions 目录 ...

  4. Django 1.10文档中文版Part4

    2.10 高级教程:如何编写可重用的apps 2.10.1 重用的概念 The Python Package Index (PyPI)有大量的现成可用的Python库.https://www.djan ...

  5. Django 1.10文档中文版Part1

    目录 第一章.Django1.10文档组成结构1.1 获取帮助1.2 文档的组织形式1.3 第一步1.4 模型层1.5 视图层1.6 模板层1.7 表单1.8 开发流程1.9 admin站点1.10 ...

  6. Django 1.10文档中文版Part3

    目录 2.7 第一个Django app,Part 5:测试 2.7.1 自动化测试介绍 2.7.2 基本的测试策略 2.7.3 编写我们的第一个测试程序 2.7.4 测试一个视图 2.7.5 测试越 ...

  7. Django 1.10文档中文版Part2

    目录 2.5 第一个Django app,Part 3:视图和模板 2.5.1 概览 2.5.2 编写更多的视图 2.5.3 编写能实际干点活的视图 2.5.4 404错误 2.5.5 使用模板系统 ...

  8. django 中文入门文档

    django中文入门文档:阅读地址

  9. JAVA - JDK 1.8 API 帮助文档-中文版

    JAVA - JDK 1.8 API 帮助文档-中文版 百度云链接: https://pan.baidu.com/s/1_7FFadw1a6J0qTfx2FzqPQ 密码: 41n4

随机推荐

  1. Session 、Application 和 HttpContext 的使用区别

    在ASP.NET WEB页面开发中,经常会需要保存一些信息,以便在不同的页面或时间段都能够访问到.这其中便会用到Session和Application. Session .Application 和 ...

  2. canvas绘制坐标轴

    效果图如下, var canvas = document.getElementById("canvas"), context = canvas.getContext("2 ...

  3. 基于HttpModule的简单.NET网站授权方案

    摘要 本文介绍一种入门级的网站授权(注:这里所指的授权指的是注册码效果,而不是网站登陆时的身份授权)方案,仅供学习交流及对付小白客户使用.复杂的网站授权涉及网站加密等一系列复杂的技术,不做本文介绍内容 ...

  4. angularjs 2.0 快速开始

    前言 angularjs2.0 如果发布,公司的项目会基于2.0开发,在1.0的时候就踩了好多坑,趁这2.0还没正式发布,赶紧踩下坑. 这篇文章是参考angularjs2.0 官方文档写的,开发环境需 ...

  5. 预处理(防止sql注入的一种方式)

    <!--- 预处理(预编译) ---><?php/* 防止 sql 注入的两种方式: 1. 人为提高代码的逻辑性,使其变得更严谨,滴水不漏. 比如说 增加判断条件,增加输入过滤等,但 ...

  6. Android笔记——数据库升级与降级

    一.概述 SQLite是Android内置的一个很小的关系型数据库.SQLiteOpenHelper是一个用来辅助管理数据库创建和版本升级问题的抽象类.我们可以继承这个抽象类,实现它的一些方法来对数据 ...

  7. $stateParams

  8. SQL Server 日期函数:EOMonth、DateFormat、Format、DatePart、DateName

    一,月份的最后一天 函数 EOMonth 返回指定日期的最后一天 EOMONTH ( start_date [, month_to_add ] ) 1,对于start_date 有两种输入方式,能够转 ...

  9. javascript面向对象系列第一篇——构造函数和原型对象

    × 目录 [1]构造函数 [2]原型对象 [3]总结 前面的话 一般地,javascript使用构造函数和原型对象来进行面向对象编程,它们的表现与其他面向对象编程语言中的类相似又不同.本文将详细介绍如 ...

  10. Android之genymotion模拟器安装于配置

    今天是双休日,可怜没人陪,只好一个人玩电脑了,之前别人一直给我推荐genymotion模拟器,说各种方便,秒杀Android自带模拟器,所以就趁这个周末搞了一下,总体感觉还挺不错的,确实比Androi ...