25

我正在研究 Django 框架,阅读文档,但没有找到关于如何在同一个项目上创建多个应用程序的参考资料,其中每个应用程序都有多个应用程序。例如,应用程序博客,应用程序用户,评论,帖子,......,实施和任务应用程序客户端,用户,附件......我应该怎么做?

localhost
localhost/blog/ (posts, user, comment, ...)
localhost/tasks/ (task, user, attachment, ...)

<my project>
-- manage.py
-- <project name>
-- -- blog
-- -- -- posts
-- -- -- -- views.py
-- -- -- -- urls.py
-- -- -- -- models.py
...
-- -- tasks
-- -- -- attachments
-- -- -- -- views.py
-- -- -- -- urls.py
-- -- -- -- models.py
...
4

3 回答 3

24

每个应用程序的文件夹中都有这些:

  • 视图.py
  • 模型.py
  • 其他选项(admin.py ...)

所以你有了 :

Project
-- manage.py
-- Project
-- -- views.py
-- -- models.py
-- -- others
-- -- APP1
-- -- -- views.py
-- -- -- models.py
-- -- -- others
-- -- APP2
-- -- -- views.py
-- -- -- models.py
-- -- -- others
-- -- APPX
-- -- -- views.py
-- -- -- models.py
-- -- -- others

该实用程序是功能之间的区别(如果您有通知应用程序和通知模型,请调用 Notification.models.notification)。

模型是对象的架构。因此,您将调用例如 User.username 或 Task.name。Django 在数据库中自动创建表。

Django 的另一个工具:您可以使用管理视图(可以编辑、创建、编辑使用您的模型的对象)或更改此界面(查看该页面

如果您愿意,您可以创建一个识别系统并创建表单,您可以使用自己的管理系统。

用你的例子:

<my project>
-- manage.py
-- <project name>
-- -- urls.py
-- -- models.py <--- User model exists in Django and here you can add informations to the defaut model it is in this file because I suppose it will be used in all your project.
-- -- views.py

-- -- blog    <--- It's an app.
-- -- -- -- views.py 
-- -- -- -- urls.py
-- -- -- -- models.py <--- Posts, Comments are models for the blog, so you explain them here.

-- -- tasks   <--- Another app.
-- -- -- attachments
-- -- -- -- views.py
-- -- -- -- urls.py
-- -- -- -- models.py  <--- Task model for exemple
于 2012-07-15T12:35:10.447 回答
18

关于 django 你应该了解的事情:

  1. URL 映射与文件系统或应用程序代码无关。这意味着您的 URL 与您的代码没有一对一的关系。您可以有多个 URL 指向同一段代码(指向同一视图)。例如,这与 PHP 不同,其中 URL 映射到文件系统。

  2. 应用程序不是“小部件”或“portlet”。应用程序只是一个 python 模块,其中包含一些文件(views.pymodels.py__init__.py;您可以拥有任意数量的应用程序。您还可以拥有使用 URL 无法访问的应用程序——它们只是为了支持其他应用程序;并且您的应用程序也不必与 URL 具有相同的名称。

所以记住这一点......你可以创建一个应用程序,调用它www,并在它的内部views.py,定义这些非常有创意的命名方法:

def blog(request):
   pass

def tasks(request):
   pass

现在在您的 中urls.py,您可以拥有:

url(r'^blog/$','www.views.blog',name='blog-index'),
url(r'^blog/posts/$','www.views.blog',name='blog-posts',kwargs={'view_posts': True}),
url(r'^tasks/$','www.views.tasks',name='task-index'),
url(r'^tasks/attachments/$','www.views.tasks',name='task-attachments'),
于 2012-07-15T09:16:11.140 回答
4

您对应用程序是什么感到困惑。应用程序只是相关功能的集合,通常(但不一定)包括模型、视图和模板。

“用户”不是一个应用程序——它是一个模型,但您通常会使用内置的 django.contrib.auth 应用程序来提供用户功能。任何应用程序都可以使用任何其他应用程序的代码,包括模型。您可以在一个应用程序中拥有任意数量的模型。

于 2012-07-15T02:57:22.190 回答