Django -在一个项目中使用不同的应用程序



在我迄今为止找到的基本Django教程和文档中,应用程序被视为项目的一些独立部分。但是,我还没有找到在一个复杂的项目中同时使用它们的解决方案。

我们可以在某个url domain/signup注册,由users.views.signup处理。

  • 对于GET请求,signup呈现signup.html
  • 对于POST请求,在评估提交的数据后,它要么用一些消息渲染signup.html或注册一个新用户,登录他/她并重定向到某个地方。

我们可以在domain/new_post(或domain/user/new_post)上创建一个新的帖子,它由posts.views.new_post处理。它的作用类似于signup处理程序:

  • 对于GET请求,它呈现new_post.html
  • 对于POST请求,它评估POST数据,然后渲染new_post.html使用消息或注册新帖子并重定向某个地方。


一般的网站是由几个应用程序组成的,在某个url上显示请求的网页提供了几个应用程序的功能。例如,在登录到一些流行的社交网站后,我们可以在我们的墙上创建新的条目,搜索用户(通常是更广泛的搜索,但为了简单起见,我们只处理用户),也可以在侧边栏中列出广告和我们的朋友。

这些部分是如何从不同应用程序的不同视图和模板中构建的?
使问题更具体:

  • 对于从某个url接收到的GET请求,我们如何显示用户搜索表单、新post表单和好友列表一起使用?
    如果我们通过一些项目级的公共视图这样做,那么应用级的视图呢?
    我已经读到,{% include %}标签是方便从几个"子模板"构建模板,但是关于不同的变量包含模板采取什么?
  • 我们如何处理用户搜索相关的GET请求,以及可能从同一url发送的新帖子相关的POST请求?
    ("从url发送的请求"可能不合适,但用户可以通过在一个特定url上显示的页面上操作来发送不同的请求。)
  • 同时,不同的组件应该保持解耦。

注意:这个问题对SO来说可能太笼统了,所以除了详细的答案,我还希望有一些来源,可能是使用不同应用程序在"行动"中的例子。

对于从某个url接收到的GET请求,我们如何显示用户搜索表单、新post表单和好友列表一起使用?

你可以请求从任何视图呈现任何模板。Django会在每个注册的应用中搜索template目录下的模板。或者您可以使用TEMPLATE_DIR指定自己的模板目录,但似乎您已经从下一个问题中知道了....

如果我们通过一些项目级别的公共视图这样做,那么app-level视图?

你能更深入地解释一下这个问题吗?

我读到{% include %}标签对于构建模板很方便从几个"子模板",但不同的变量包含的模板采用?

From the docs:

包含的模板使用模板的上下文呈现

如果你有一个部分模板,打算包括,如:

# hello.html
<h2>Hello {{ person.name }}</h2>

和另一个模板包含它:

# greeting.html
{% include 'hello.html' %}

render_to_response('greeting.html', {})

输出将是Hello,因为在模板上下文中没有person

我不太明白你的第二点。你的django包只是一个python包。如果你有两个应用,你可以选择任何方式导入代码,从两个不同的应用中导入模块。 例如,在大多数项目中,我最终都有一个common应用程序。这通常包含整个django项目中使用的实用程序。它通常包含我的基本测试类。

在你的应用中你可以直接导入

from yourproject.common.utils import a_function

为了帮助解耦,django提供了一个信号框架。你的应用程序可以发出和接收信号。

Django包含了一个"信号分派器"来帮助解耦中的其他地方发生操作时,应用程序会得到通知框架。简而言之,信号允许特定的发送者通知一个一些动作已经发生的接收者集合。他们尤其当许多代码段可能对相同的事件感兴趣时非常有用。

相关内容

  • 没有找到相关文章

最新更新