`
MyEyeOfJava
  • 浏览: 1151817 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7af2d6ca-4fe1-3e9a-be85-3f65f7120bd0
测试开发
浏览量:71165
533896eb-dd7b-3cde-b4d3-cc1ce02c1c14
晨记
浏览量:0
社区版块
存档分类
最新评论

Django可重用性模块管理

阅读更多

在大型工程里,一定涉及到架构涉及,Django的新手引导文档将View,Urls,Model做了简单的MVC模型,但是当系统较大时势必每个文件的内容将会增多管理起来就较为混乱。

 

如此就应该将大型软件系统分割成小型软件系统,以为功能点为单位,合作完成项目。

 

以一个性能平台为例:

将一个服务端性能平台分割成:脚本管理、数据仓库管理、场景管理、调度执行、结果报告,几个部分,将每个一部分作为一个App进行处理,使用打包发布引用的方式,完成最后的合作设计。

 

此部分可参考Django2.2的官方文档:

https://docs.djangoproject.com/zh-hans/2.2/intro/reusable-apps/

 

打包你的应用

Python 的 打包 将以一种特殊的格式组织你的应用,意在方便安装和使用这个应用。Django 本身就被打包成类似的形式。对于一个小应用,例如 polls,这不会太难。

  1. 首先,在你的 Django 项目目录外创建一个名为 django-polls 的文件夹,用于盛放 polls

    为你的应用选择一个名字

    当为你的包选一个名字时,避免使用像 PyPI 这样已存在的包名,否则会导致冲突。当你创建你的发布包时,可以在模块名前增加 django- 前缀,这是一个很常用也很有用的避免包名冲突的方法。同时也有助于他人在寻找 Django 应用时确认你的 app 是 Django 独有的。

    应用标签(指用点分隔的包名的最后一部分)在 INSTALLED_APPS 中 必须 是独一无二的。避免使用任何与 Django contrib packages 文档中相同的标签名,比如 authadminmessages

  2. 将 polls 目录移入 django-polls 目录。

  3. 创建一个名为 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.
    
  4. 创建一个 django-polls/LICENSE 文件。选择一个非本教程使用的授权协议,但是要足以说明发布代码没有授权证书是 不可能的 。Django 和很多兼容 Django 的应用是以 BSD 授权协议发布的;不过,你可以自己选择一个授权协议。只要确定你选择的协议能够限制未来会使用你的代码的人。

  5. 下一步我们将创建 setup.py 用于说明如何构建和安装应用的细节。关于此文件的完整介绍超出了此教程的范围,但是 setuptools docs 有详细的介绍。创建文件 django-polls/setup.py 包含以下内容:

    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',
        ],
    )
    
  6. 默认包中只包含 Python 模块和包。为了包含额外文件,我们需要创建一个名为 MANIFEST.in 的文件。上一步中关于 setuptools 的文档详细介绍了这个文件。为了包含模板、README.rst 和我们的 LICENSE 文件,创建文件 django-polls/MANIFEST.in 包含以下内容:

    django-polls/MANIFEST.in
    include LICENSE
    include README.rst
    recursive-include polls/static *
    recursive-include polls/templates *
    
  7. 在应用中包含详细文档是可选的,但我们推荐你这样做。创建一个空目录 django-polls/docs 用于未来编写文档。额外添加一行至 django-polls/MANIFEST.in

    recursive-include docs *
    

    注意,现在 docs 目录不会被加入你的应用包,除非你往这个目录加几个文件。许多 Django 应用也提供他们的在线文档通过类似 readthedocs.org 这样的网站。

  8. 试着构建你自己的应用包通过 ptyhon setup.py sdist (在 django-polls``目录内)。这将创建一个名为 ``dist 的目录并构建你自己的应用包, django-polls-0.1.tar.gz

更多关于打包的信息,见 Python 的 关于打包和发布项目的教程

使用你自己的包名

由于我们把 polls 目录移出了项目,所以它无法工作了。我们现在要通过安装我们的新 django-polls 应用来修复这个问题。

作为用户库安装

以下步骤将 django-polls 以用户库的形式安装。与安装整个系统的软件包相比,用户安装具有许多优点,例如可在没有管理员访问权的系统上使用,以及防止应用包影响系统服务和其他用户。

注意,用户安装仍然会影响以这个用户身份运行的系统工具,所以 virtualenv 是一个更强大的解决方案(如下所示)。

  1. 为了安装这个包,使用 pip (你早已 安装 pip, 对吗?):

    pip install --user django-polls/dist/django-polls-0.1.tar.gz
    
  2. 幸运的话,你的 Django 项目应该再一次正确运行。启动服务器确认这一点。

  3. 通过 pip 卸载包:

    pip uninstall django-polls
分享到:
评论

相关推荐

    django学生信息管理系统

    Django是一个高级的Web开发框架,它强调可重用性和“开箱即用”的功能,使得开发者能够快速构建安全、高效的应用。 在该系统中,我们可以预见到以下几个核心模块或功能: 1. 用户认证与权限管理:Django自带了强大...

    基于Django的网络运维管理系统的设计与实现

    Django是一种基于Python的开源Web开发框架,遵循MVC(Model-View-Controller)架构模式,以其简单易学、组件的可重用性和可插拔性以及快速开发周期而著称。在本系统中,Django被用来构建整个运维管理系统的前端与...

    Python-由PythonDjango开发的结合文档管理故障管理服务器资产管理于一体的运维管理平台

    7. **部署与扩展**:Django 应用可以部署在多种服务器环境中,如 Apache 或 Nginx,且支持多种数据库后端,如 MySQL、PostgreSQL 等,这为运维管理平台提供了高度的可扩展性和灵活性。 总的来说,这个基于 Python ...

    基于python+Django个人密码本管理系统源码数据库论文.docx

    *Django框架的应用:Django框架是Python语言下的一个高级Web框架,具有强大的模块化和重用性,能够快速构建复杂的Web应用程序。 二、系统分析 *可行性分析:在设计和实现个人密码本管理系统时,需要考虑技术可行性...

    django管理系统项目

    Django是一个高级的、面向对象的Web开发框架,它强调可重用性和“开箱即用”的理念,允许开发者快速地构建高效且健壮的Web应用。 【描述】中的“django管理系统项目”可能是一个包含用户登录、数据管理、权限控制等...

    计算机毕业设计-Python语言开发的django社团管理系统-毕设源代码+说明文档.rar

    3. **模块化开发**:系统各功能模块独立开发,降低了耦合度,提高了代码的可重用性。 4. **RESTful API**:提供了丰富的API接口,方便与其他系统集成或进行二次开发。 **四、适用对象** 1. 计算机专业学生:可作为...

    python Django web 实训项目的实验报告

    Django是一个开源的Web框架,遵循"DRY"(Don't Repeat Yourself)原则,旨在快速开发,注重代码的可重用性。其主要特性包括: 1. **ORM(对象关系映射)**: Django提供了强大的ORM层,使得开发者可以用Python代码操作...

    python Django中的apps.py的目的是什么

    在Python的Django框架中,apps.py文件是Django应用程序的配置中心,它负责存放应用程序的元数据和...这样不仅可以方便地进行项目内的配置管理,还能保证应用的可重用性与可扩展性,从而使得Django项目更加灵活和强大。

    毕业设计:基于python、django和ansible开发的自动化管理系统.zip

    - Roles:可重用的模块,包含一组相关的配置任务,方便组织和管理复杂的自动化流程。 - Inventory:定义需要管理的服务器列表,可以是静态文件或动态数据源。 4. 毕业设计具体实现 - 可能包括用户登录注册、权限...

    Django基础.pdf

    Django的MVT架构让Web应用的开发更加模块化,每个部分分工明确,增强了代码的可扩展性和可移植性。在MVT模式中,Model负责与数据库交互,进行数据处理;View接收请求并进行业务处理;Template负责生成HTML内容。 ...

    Django Documentation.pdf

    文档还包括了针对初学者的教程部分,涵盖了从安装Django、编写第一个Django应用的各个步骤,到如何编写可重用的应用程序的高级教程。这些内容为Django的入门者提供了一个循序渐进的学习路径。 ### 高级话题...

    基于python django框架的周报管理系统.zip

    Django是用Python编写的开源Web应用框架,遵循模型-视图-控制器(MVC)设计模式,强调可重用性和“开箱即用”的功能。本系统的核心目标是简化周报的提交、审核和检索过程,提高团队协作效率。 首先,我们来看看...

    Python基于Django银行信贷管理系统设计源码案例设计.zip

    Django是Python的一款高级Web框架,它遵循MVT(Model-View-Template)设计模式,强调可重用性和“干”原则。Django提供了数据库交互、用户认证、表单处理、URL路由等众多功能,使得开发者能够快速构建高效、安全的...

    Django说明及示例

    - **设计原则**:确保应用具有良好的封装性和可重用性。 - **依赖管理**:合理管理应用之间的依赖关系。 ##### 2. 进阶教程 - **高级功能探索**:如信号处理、自定义中间件等。 - **最佳实践**:分享社区的最佳实践...

    Django 中文文档

    Django遵循MVC(模型-视图-控制器)设计模式,使得Web开发更加模块化和可维护。以下是根据给定文件内容整理出的Django中文文档的知识点: 1. Django文档概览:文档涵盖从基础入门、安装教程到模型、视图、模板、...

    双鱼林Python基于Django图书管理系统.zip

    Django强调可重用性和“干”(Don't Repeat Yourself)原则,使得开发者能够快速构建安全且高效的Web应用。 【Python语言】 Python是一种高级编程语言,以其简洁、易读的语法和丰富的标准库闻名。Python在Web开发...

    Django权威指南(Practical Django Projects第2版)

    本书《Django权威指南(Practical ...通过阅读本书,读者不仅能够学会Django框架的基础,还能通过实际案例掌握如何应用Django进行高效Web开发,以及如何保持代码的清晰、灵活和可重用性,从而成为更加高效的程序员。

    Django10个使用技巧

    Jeff Croft的文章阐述了如何将Django的admin功能作为通用的管理模块。 4. **独立的媒体服务器**:在生产环境中,应将静态文件托管在独立的服务器或服务上,如Amazon S3,以提高性能。这有助于减少主服务器的负载,...

    Django1.6 官方文档

    **Django** 是一个高度模块化且可扩展的 Python Web 框架,它鼓励快速开发并遵循 DRY(Don't Repeat Yourself)原则。**Django 1.6** 是该框架的一个版本,它在 2014 年发布,包含了一系列新功能和改进。 **Django ...

    【项目实战】Python基于Django框架实现校园网上一站式购物系统

    Django是一个高级的Web框架,它强调可重用性和“开箱即用”的功能,能够快速构建高效且安全的Web应用。在这个项目中,我们将深入理解Django的核心概念,如模型(Models)、视图(Views)、模板(Templates)和URL...

Global site tag (gtag.js) - Google Analytics