Python 使用django的多个应用程序

Python 使用django的多个应用程序,python,django,frameworks,Python,Django,Frameworks,我正在研究Django框架,阅读文档,但没有找到关于如何在同一个项目上创建多个应用程序的参考资料,其中每个应用程序都有多个应用程序。例如,应用程序博客,包含应用程序用户、评论、帖子等,以及应用程序客户端、用户、附件的实现和任务。。。我该怎么办 localhost localhost/blog/ (posts, user, comment, ...) localhost/tasks/ (task, user, attachment, ...) <my project> -- mana

我正在研究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
...
localhost
本地主机/博客/(帖子、用户、评论等)
本地主机/任务/(任务、用户、附件等)
--manage.py
-- 
----博客
----职位
---->views.py
---->url.py
---->models.py
...
----任务
----附件
---->views.py
---->url.py
---->models.py
...

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


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

关于django,您应该了解的事情:

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

  • 应用程序不是“小部件”或“portlet”。应用程序只是一个python模块,已经包含了一些文件(
    views.py
    models.py
    \uuuuu init\uuuu.py
    );你可以拥有任意数量的应用程序。您还可以使用URL访问不到的应用程序-它们只是用于支持其他应用程序;您的应用程序也不必与URL具有相同的名称

  • 所以记住这一点。。。您可以创建一个应用程序,称之为
    www
    ,并在其
    视图.py
    中定义这些非常有创意的命名方法:

    def blog(request):
       pass
    
    def tasks(request):
       pass
    
    现在,在您的
    url.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'),
    

    每个应用程序的文件夹中将包含以下内容:

    • views.py
    • models.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
    
    
    --manage.py
    -- 
    ----url.py
    
    ----models.py如果我需要使我的站点具有管理界面,而不使用contrib.admin,该怎么办。如何区分逻辑?“此视图是管理界面,这是公共界面”?如果需要。或者将其拆分为两个视图文件-视图只是Python函数,它们可以存在于任何地方。或者为所有其他应用程序的所有管理功能提供一个单独的应用程序。由你决定。祝你好运!两周前我还在你的案子里,现在我觉得django用了一种不可思议的语言!!我开始用ZigBee NETWORKE在家庭自动化大学学习这个项目,我的应用程序是APP1和APP2。现在,当我请求APP2中的Apple页面时,它仍然呈现App1的页面。对于第一个app1,我将其作为urlpattern/project/app1/显示,对于第二个app,我将/project/app2/about.html——从第一个app显示。如果有用户可以发布或创建任务,则将用户模型放在哪里-在blog或tasks app中?或者,如果您建议创建另一个应用程序(用户),那么应该如何定义用户post/用户任务关系?将Django与PHP进行比较是不正确的。Django是python之上的一个框架。PHP可以与python或Jinja模板语言相比较,但不能与Django相比较。非常清晰的答案!谢谢