首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在项目中实际使用可重用的django应用程序?

如何在项目中实际使用可重用的django应用程序?
EN

Stack Overflow用户
提问于 2014-02-16 13:36:10
回答 2查看 8.2K关注 0票数 18

这个问题已经困扰我好几天了,我在很多地方都试着征求意见,但似乎没有人能清楚地回答它,甚至没有人能提供答案的参考。

我也尝试过搜索教程,但我只是找不到任何类型的教程来解释如何使用可重用的第三方django应用程序(大多数教程解释如何编写它们,而没有说明如何使用它们)。

另外,我在这里看了一下:

如何在Django中重用可重用的应用程序 -它并没有解释如何在项目本身中实际使用它

在这里:

如何将多个可重用的Django应用程序绑定在一起? --水行星的答案有点道理,但我想我会问这个问题来解决我在试图理解这个问题时所面临的心理障碍。

为了最好地解释这一点,让我举个例子(注意,这不是我正在构建的东西)。

我正在创建一个类似Reddit的项目。我将有用户,链接和投票/积分。基于这个粗糙的例子,我想重用3(任意)第三方应用程序:用户,投票/积分和链接。

我决定使用它们中的每一个作为任何其他python包(这意味着它们将被当作一个包来处理,它们的代码都不应该被碰触)[这个方法真的有效吗?或者你必须能够编辑第三方应用程序来构建一个项目?)

现在这些应用程序都在我的项目中,我将使用一个主应用程序来处理所有的模板内容(这意味着我在前端看到的所有东西都在一个应用程序中)。

然后,我将使用相同的主应用程序进行自定义逻辑(在views.py中),或者我将在不同的应用程序中分解该逻辑(但仍将使用单一的前端应用程序)。

从上面的三段来看,这个结构是否适用(或者它能工作)?

现在让我们说,这个结构是适用的,我使用的是一个单一的主应用程序的前端和自定义逻辑。

我用models.py写什么?如何将3个可重用应用程序的内容集成到主models.py文件中?

如何引用views.py中的可重用应用程序?让我们以contrib.auth为例

在这个内置的应用程序中,为了注销,我会写:

代码语言:javascript
复制
from django.contrib.auth import logout
from django.contrib.auth.decorators import login_required
from django.shortcuts import redirect

@login_required
def user_logout(request):
    logout(request)
    return redirect('/home/')

虽然上面的代码很简单,但是对于任何可重用的应用程序来说,这基本上是怎么做的吗?

我的问题很长,但我认为这个可重用的应用程序问题是很多开发人员对自己不太清楚的问题,也许这个答案会帮助很多其他人,他们听说过可重用应用的承诺,但不知道如何实际使用它们。

EN

回答 2

Stack Overflow用户

发布于 2014-02-16 14:09:35

TL;DR:

不,这取决于..。

一些(非常)通用的可重用应用程序

..。这些都是可重用的Django应用程序,碰巧是Django附带的(在某个时候,大多数应用程序都不是这样)

好吧,其他一些不随Django附带的可重用应用程序:

这些都是真正可重用的应用程序,也是最重要的。还有更多类似的应用程序。

他们是怎么做到的?

在我看来,你的问题更像是“我如何构建可重用的应用程序”,然后是“如何使用它们”。实际上,不同的应用程序使用它们是非常不同的,因为它们所做的事情非常不同。只有一条规则:RTFM也无济于事。

它们通常依靠以下一种或多种手段:

  • settings.py中的附加值
  • 将(通常为一条include语句)添加到urls.py
  • 模型、窗体、字段、视图等的子类和/或混合。
  • 模板标签和/或过滤器
  • 管理命令
  • ..。

这些都是强大的方式,尽管你的应用程序可以为其他应用提供功能。没有制作可重用应用程序的配方(AFAIK),因为有很多不同的场景需要考虑。这完全取决于你的应用程序到底应该做什么。

可重用的应用程序提供功能

我认为,重要的是不要将可重用的应用视为与其他应用程序“协同工作”,而是要认识到它们“提供功能”。所提供的功能的细节应该决定目标开发人员使用库的方式。

并不是所有的东西都应该被重用。

很明显,尽管许多应用程序可以“原则上”重用,但这样做通常没有什么意义,因为将事情聚在一起(并让它们“一起工作”)要快得多。

票数 8
EN

Stack Overflow用户

发布于 2014-02-16 14:08:58

我不知道为什么你认为你需要一个主要的应用程序的“前端”的东西。一个可重用的应用程序的要点是,它处理所有事情,您只需添加(通常)一个URL来包含应用程序的urls.py,再加上您自己的模板和样式。

当然,您也不需要将应用程序的视图包装在自己的视图中,除非您特别希望覆盖某些功能。

我完全不明白你关于模特的问题。不存在“主”模型文件,使用可重用应用程序的模型就像使用您自己的应用程序中的模型一样。

通常,您不会编辑第三方应用程序,这将使它很难集成更新。只需在您的virtualenv中安装应用程序(当然,您使用的是virtualenv!)使用pip,它将把它放在lib目录中,您可以像其他应用程序一样引用它。确保将其添加到INSTALLED_APPS中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21811851

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档