我即将为我正在开发的网络应用程序构建一个django项目。出于结构目的,我想知道是否有可能在项目中有两个不同的应用程序,这些应用程序在django项目中的单个应用程序中就像两个不同的东西相互通信。例如:
有一个django项目的两个不同部分。用户和群组。
我目前有一个测试项目,它同时属于django项目的常规应用程序。在一般项目中,我将项目的所有部分都包含在一个应用程序中。我想知道我是否可以将这个项目的不同部分拆分成可以相互通信的单独应用程序(模板,重定向,渲染),以及如何连接它们或我需要做什么来将它们连接在一起。
example
-example
-__init__.py
-settings.py
-urls.py
-wsgi.py
-general
-__init__.py
-admin.py
-apps.py
-models.py
-test.py
-urls.py
-views.p
这就是我在想的事情
example
-example
-__init__.py
-settings.py
-urls.py
-wsgi.py
-users
-__init__.py
-admin.py
-apps.py
-models.py
-test.py
-urls.py
-views.p
-groups
-__init__.py
-admin.py
-apps.py
-models.py
-test.py
-urls.py
-views.p
如何在url文件中连接两个不同的项目,以便我可以在两者之间重定向url。如果可能的话,如果我想从用户应用程序中的网址转到群组应用中的网址,重定向会是什么样子...主要网址文件在示例文件夹中会是什么...... / p>
另一个问题是......查询是保持不变还是我需要更改查询的方式......
答案 0 :(得分:2)
是的,您当然可以在django项目中让多个应用程序相互通信。
example.urls:
from django.conf.urls import include, url
urlpatterns = [
url(r'^users/', include('users.urls')),
url(r'^groups/', include('groups.urls')),
]
users.urls:
urlpatterns = [
url(r'^myurl/$', users.views.myview, name='users_myview'),
]
通过将name
参数与users_
等应用标识符一起使用,您可以确保可以唯一标识您的网址。在视图中,您可以将其称为:
views.py:
from django.core.urlresolvers import reverse
reverse('users_myview',args=())
答案 1 :(得分:2)
您应该阅读有关URL调度程序的Django文档。以下是引用inclusion of other URLconfs的部分。
在urlpatterns
的{{1}}中添加来自应用的网址。我还建议你使用命名空间参数来避免混淆。
example.urls
然后在视图和模板中使用url语法urlpatterns = [
url(r'^', include('users.urls', namespace='users')),
url(r'^', include('groups.urls', namespace='groups')),
]
。
答案 2 :(得分:2)
groups:urls.py
urlpatterns = [
url(r'^add-groups/$', view_1),
url(r'^fetch-groups/group_id(?P<num>[0-9]+)/$', view_2),
]
users:urls.py
urlpatterns = [
url(r'^add-users/$', group_add_view),
url(r'^fetch-users/user_id(?P<num>[0-9]+)/$', group_fetch_view),
]
示例:url.py (主网址)
from django.conf.urls import include, url
from groups.urls import urlpatterns as group_patterns
from users.urls import urlpatterns as user_patterns
urlpatterns = [
url(r'^groups/', include(group_patterns)),
url(r'^users/', include(user_patterns)),
]
/groups/add-groups/
将转到group_add_view