美文网首页Python
django如何编写可重用的应用程序

django如何编写可重用的应用程序

作者: Mlotjve | 来源:发表于2018-08-16 14:50 被阅读111次

如果想把一个应用( 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 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

  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::
    path('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和许多与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

相关文章

  • Django 官网最新 Tutorial 渣翻 - Part 8

    上一节:Django 官网最新 Tutorial 渣翻 - Part 7 进阶教程:如何编写可重用的应用程序 这个...

  • django如何编写可重用的应用程序

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

  • web开发02---Django

    Django Django是python语言编写,专门用于快速高效率开发web应用程序的框架。框架:模块的集合,具...

  • Django第一部分梳理总结(概念知识)

    Django是python语言编写的,专门用于快速、高效的开发web应用程序的一个框架! django由于其非常特...

  • windows下通过pip安装Django

    可参考文档:如何在 Windows 上安装 Django | Django 文档 | Django (django...

  • 部署您的项目

    本章提供了关于如何部署Django应用程序的分步指南。 我们将考虑在PythonAnywhere上部署应用程序,在...

  • Part 2

    编写你的第一个Django应用程序,第2部分 数据库设置 现在,打开 mysite/settings.py 。它是...

  • Dockerfile的使用

    如何使用Dockerfile创建image? 1.编写Dockerfile(此处示例为django项目) # 从仓...

  • python - functions

    函数是一块可重用的代码,用于执行单个相关操作。 函数为您的应用程序提供更好的模块性,并提供高度的代码重用。正如你已...

  • Swift中的Facade设计模式与代码示例

    正如您可以想象的那样,在创建Swift应用程序时,代码可重用性是我们的首要任务之一。为了尽可能多地重用代码,我们通...

网友评论

    本文标题:django如何编写可重用的应用程序

    本文链接:https://www.haomeiwen.com/subject/kuvnbftx.html