django如何编写复用的应用程序

本文介绍了如何将Django应用转化为可重用的Python包,包括理解package和app的区别,打包应用程序的步骤,以及如何在新项目中使用这些可重用的应用。主要内容包括:为应用选择合适的名字,使用setuptools和pip进行打包和安装,以及确保应用在不同项目中的兼容性。
摘要由CSDN通过智能技术生成

如果想把一个应用( web-poll) 变成一个独立的Python包,在新项目中重用,并与他人共享。

可重用性很重要

  • 设计、构建、测试和维护web应用程序有很多工作要做。许多Python和Django项目都有共同的问题。如果我们能挽救一些重复的工作,岂不是很好?

  • 可重用性是Python中的生命方式。Python包索引(PyPI)有大量的包,您可以在自己的Python程序中使用。看看你可以在你的项目中加入的现有可重用应用程序的Django包。Django本身也是一个Python包。这意味着您可以使用现有的Python包或Django应用程序,并将它们组合到您自己的web项目中。您只需要编写使您的项目独一无二的部分。

假设你正在启动一个新项目,它需要一个像我们一直在做的调查应用。如何使这个应用程序可重用?

package 和 app的区别


package
  • Python包提供了一种分组相关Python代码的方法,以便易于重用。一个包裹包含一个或多个Python代码的文件(也称为“模块”)。

    包的引用方式:

    1. import foo.bar or from foo import bar.
    2. For a directory (like polls) to form a package, it must contain a special file _init_.py, even if this file is empty.
app

Django应用程序只是一个Python包,专门用于Django项目中。应用程序可以使用常见的Django约定,例如拥有models、test、urls 和views 子模块。

项目和可重用的应用程序:

image.png

现在,polls 目录可以被复制到一个新的Django项目中,并立即重新使用。不过,它还没有完全准备好发表。为此,我们需要打包应用程序,让其他人更容易安装。

前提准备工作

Python包装的当前状态与各种工具有些混乱。我们将使用setuptools来构建包裹。它是推荐的打包工具(与distribute叉合并)。我们还将使用pip来安装和卸载它。您现在应该安装这两个软件包, 您可以参考如何用pip安装Django。您可以以同样的方式安装setuptools

打包应用程序

Python打包是指以一种易于安装和使用的特定格式来准备您的应用程序。Django本身就是这样打包的。对于像 polls 这样的小型应用来说,这个过程并不太难。

  1. 首先,在Django项目之外为 polls 创建一个父目录。这个目录django-polls
为你的应用选择一个名字

在为软件包选择名称时,请检查像PyPI这样的资源,以避免与现有软件包命名冲突。在创建分发包时,预先将django-放在您的模块名称中是很有用的。这可以帮助其他寻找Django应用的人识别你的应用程序。

应用程序标签(即应用程序包的虚线的最后一部分)必须在INSTALLED_APPS中是唯一的。避免使用与Django发明包相同的标签,例如auth, admin, messages

  1. polls目录移动到django-poll目录中。

  2. 创建一个文件django-polls / README.rst有以下内容:

django-polls/README.rst

=====

Polls

polls 是一个简单的Django应用程序,用于进行基于网络的polls。为每一个
问题,访问者可以在固定数量的答案之间做出选择。>

Quick start

  1. 将“polls”添加到你的INSTALLED_APPS设置中:

    INSTALLED_APPS = [

    ‘polls’,
    ]
    2.在您的项目url.py 中包含投票URLconf是这样的::
    path(‘polls/’, include(‘polls.urls’)),

  2. Run python manage.py migrate to create the polls models.

  3. Start the development server and visit http://127.0.0.1:8000/admin/
    to create a poll (you’ll need the Admin app enabled).

  4. Visit http://127.0.0.1:8000/polls/ to participate in the poll.

  1. 创建一个 django-polls /LICENSE 。选择许可证超出了本教程的范围,但足以说明没有许可证公开发布的代码是无用的。Django和许多与django-兼容的应用程序都是在BSD许可下发布的;然而,你可以自由选择自己的license。请注意,您的许可选择将影响谁能够使用您的代码。

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',
            'Programming Language :: Python :: 3.5',
            'Programming Language :: Python :: 3.6',
            'Topic :: Internet :: WWW/HTTP',
            'Topic :: Internet :: WWW/HTTP :: Dynamic Content',
        ],
    )
  1. 默认情况下,只有Python模块和包裹包含在包中。为了包含更多的文件,我们需要创建一个MANIFEST.in。在文件中。在前面的步骤中提到的setuptools文档更详细地讨论了这个文件。包括模板,README.rst 和我们的LCENSE文件,创建一个文件django-polls/MANIFEST.in。以下内容:

django-polls/MANIFEST.in

include LICENSE
    include README.rst
    recursive-include polls/static *
    recursive-include polls/templates *
  1. 它是可选的,但是推荐的,可以在你的应用中包含详细的文档。为将来的文档创建一个空目录django-polls/docs。在django-polls/MANIFEST.in中添加一条额外的行。

recursive-include docs *

注意,除非您向它添加一些文件,否则docs目录不会包含在您的包中。许多Django应用程序还可以通过readthedocs.org等网站提供他们的文档

  1. 尝试用python设置构建软件包。 with python setup.py sdist (run from inside django-polls). 这将创建一个名为“dist”的目录,并构建您的新包,django-poll-0.1.tar.gz。

image.png

Using your own package

由于我们将 polls 目录移出了项目,所以它不再工作了。现在,我们将通过安装新的django-poll包来解决这个问题。
image.png

作为用户库安装

下面的步骤将django-poll作为用户库安装。每个用户的安装比在系统范围内安装包有很多优势,比如在没有管理员访问的系统上可用,以及防止软件包影响系统服务和其他用户。
注意,每个用户的安装仍然可以影响作为该用户运行的系统工具的行为,因此virtualenv是一个更健壮的解决方案(见下文)。

  1. 要安装软件包,请使用pip(您已经安装了它,对吗?)

pip install –user django-polls/dist/django-polls-0.1.tar.gz

image.png

  1. 幸运的是,Django项目现在应该再次正常工作。再次运行服务器来确认这一点。
    image.png

  2. 要卸载软件包,请使用pip:

pip uninstall django-polls

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值