我正在研究 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
...
每个应用程序的文件夹中都有这些文件:
所以,你有:
Project
-- manage.py
-- Project
-- -- views.py
-- -- models.py
-- -- ...
-- -- APP1
-- -- -- views.py
-- -- -- models.py
-- -- -- ...
-- -- APP2
-- -- -- views.py
-- -- -- models.py
-- -- -- ...
-- -- APPX
-- -- -- views.py
-- -- -- models.py
-- -- -- ...
实用程序是功能之间的区别(调用 notification.models.Notification 以访问通知应用程序内的通知模型)。
模型是对象的架构。执行迁移命令后,Django 会自动为每个模型创建数据库表。要访问这些表的各个字段,请使用以下语法:Model.field(例如,User.username、Task.name)。
使用 Django 管理界面手动创建和编辑模型实例。该界面是可定制的(看这里)。
此外,您可以创建识别系统、自定义表单并使用您自己的管理系统。
以您为例:
<my project>
-- manage.py
-- <project name>
-- -- urls.py
-- -- models.py <--- User model exists in Django. You can customize it in this file if needed.
-- -- views.py
-- -- blog <--- It's an app.
-- -- -- -- views.py
-- -- -- -- urls.py
-- -- -- -- models.py <--- Post and Comment are models of the "blog" app. You define them here.
-- -- tasks <--- Another app.
-- -- -- attachments
-- -- -- -- views.py
-- -- -- -- urls.py
-- -- -- -- models.py <--- Models of the "tasks" app, i.e., Task model
关于 django 你应该了解的事情:
URL 映射与文件系统或应用程序代码无关。这意味着您的 URL 与您的代码没有一对一的关系。您可以有多个 URL 指向同一段代码(指向同一个视图)。这与 PHP 等不同,其中 URL 映射到文件系统。
应用程序不是“小部件”或“portlet”。应用程序只是一个Python模块,其中已经包含了一些文件(
views.py
、models.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'),
您对应用程序是什么感到困惑。应用程序只是相关功能的集合,通常(但不一定)包括模型、视图和模板。
“Users”不是一个应用程序 - 它是一个模型,但您通常会使用内置的 django.contrib.auth 应用程序来提供用户功能。任何应用程序都可以使用任何其他应用程序的代码,包括模型。您可以在一个应用程序中拥有任意数量的模型。