使用 django 实现多个应用程序

问题描述 投票:0回答:3

我正在研究 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
...
python django frameworks
3个回答
27
投票

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

  • views.py
  • 模型.py
  • 其他选项(admin.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

18
投票

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

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

  2. 应用程序不是“小部件”或“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'),

4
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.