在我到目前为止发现的基本Django教程和文档中,应用程序被视为项目的一些独立部分。 但是,我还没有找到在复杂项目中一起使用它们的解决方案。
我们可以在某个网址domain/signup
注册,并由users.views.signup
处理。
signup
呈现signup.html
。signup.html
或注册新用户,
记录他/她并重定向到某个地方。我们可以在domain/new_post
(或domain/user/new_post
)创建一个由posts.views.new_post
处理的新帖子。它的行为类似于signup
处理程序:
new_post.html
。new_post.html
带有消息或注册新帖子并重定向
某处。
一般网站由多个应用程序构成,在某个网址上显示的请求网页提供了多个应用程序的功能。
例如,在登录一些流行的社交网站后,我们可以在我们的墙上创建新条目,搜索用户(通常是更广泛的搜索,但为了简单起见,我们只讨论用户),广告和我们的朋友也可能是列在侧边栏中。
这些部分是如何根据不同应用的不同视图和模板构建的?
为了使问题更具体:
{% include %}
标签对于从几个“子模板”构建模板很方便,但是所包含的模板采用的不同变量呢?注意:这个问题对于SO来说可能过于通用了,所以我也很感激来源,可能还有“在行动中”使用不同应用程序的例子。
答案 0 :(得分:0)
对于在某个网址收到的GET请求,我们如何显示 用户搜索表单,新帖子和朋友列表在一起?
您可以请求从任何视图呈现任何模板。 Django将通过template
目录的每个注册应用程序搜索模板。或者您可以使用TEMPLATE_DIR
指定自己的模板目录,但似乎您已经从下一个问题中了解了这一点....
如果我们通过一些项目级别的共同视图来做到这一点,那么 应用级视图?
请您尝试更深入地解释这个问题吗?
我已经读过{%include%}标记对于构建模板很方便 从几个“子模板”,但不同的变量呢? 包含的模板需要?
来自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提供了一个signals框架。您的应用可以发出和接收信号。
Django包含一个“信号调度程序”,它有助于解耦 当动作发生在其他地方时,应用程序会收到通 框架。简而言之,信号允许某些发件人通知 已经发生了一些行为的接收器集。他们特别 当许多代码可能对同一事件感兴趣时很有用。