在我迄今为止找到的基本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
common
应用程序。这通常包含整个django项目中使用的实用程序。它通常包含我的基本测试类。
在你的应用中你可以直接导入
from yourproject.common.utils import a_function
Django包含了一个"信号分派器"来帮助解耦中的其他地方发生操作时,应用程序会得到通知框架。简而言之,信号允许特定的发送者通知一个一些动作已经发生的接收者集合。他们尤其当许多代码段可能对相同的事件感兴趣时非常有用。