我对如何构建使用四个表的应用程序的文件夹感到困惑。我应该为每个表创建不同的urls.py并将它们放在一个文件夹中吗?我应该在每个文件夹中包含views.py吗?那个forms.py呢?
我的结构是这样的: db_project - > db_app
在db_app下有一个包含4个表的数据库,我们只需将它们称为a,b,c和d。每个表都有一个表单,用于向表中添加数据以及列表视图。
我应该在db_app下创建a,b,c和d文件夹,然后在每个文件夹中创建网址,视图和表单吗?或者我应该只创建一个包含4个表的所有信息的文件,并在db_app下的单个urls.py文件中处理所有路由?
另外,我可以在同一个文件夹中制作4个urls.py文件,并将它们命名为a_urls.py等吗?或者Django是否要求名称严格为urls.py?
谢谢!
答案 0 :(得分:3)
不,这不是必要或不可取的。如果所有表单和表(模型)在逻辑上都是同一个应用程序的一部分,那么将它们全部放在db_app下。
将四个表定义(models.Model子类)放入models.py,将四个表单放入forms.py,将views.py中的所有视图以及这些视图的所有url放入urls.py。
如果您编写的某些代码在逻辑上与您正在编写的代码分开,例如完全独立的应用程序或相关但代表完整不同功能集的应用程序,则创建另一个应用程序文件夹(使用manage。 py startapp)。
顺便说一句,如果您需要从另一个应用程序访问一个应用程序中的模型,您可以这样做,这不是问题。您只需将模型类从一个应用程序导入另一个应用程序,例如:from app3.models import MySharedModel
。但在这种情况下,你似乎还不需要它。
但是,让我们说你写了一个用于维护所有服装数据库的应用程序,然后你写了一个用于维护食谱列表......这些不太可能共享任何数据。但两者都使用auth应用程序登录。如果你要为自己创建一个事件日历应用程序,那么谁知道..也许你会在日历应用程序和服装应用程序之间有依赖关系,以便服装应用程序可以提醒你最喜欢的夏季西装需要在婚礼前一周去看清洁工...
典型的文件夹布局是:
# the main project folder, containing manage.py
myproject/
# the main app,
# which contains your master settings.py and also master urls.py
# it can also contain views, models etc and have full app functionality
myproject/myproject
# a second app
# this also contains all the same files as usual but does not need
# settings.py, which is gotten from the myproject/myproject/settings.py
myproject/app2
# a third app
myproject/app3
# your myproject/myproject/urls.py:
from django.conf.urls import patterns, include, url
import app2.urls
import app3.urls
urlpatterns = patterns('',
url(r'^app2/', include('app2.urls')),
url(r'^app3/', include('app3.urls')),
)
然后,你也会有app2'和' app3'在yourproject / yourproject / settings.py
中的INSTALLED_APPS列表中在这个例子中,'主人'应用程序没有它自己的网址,但它完全可以拥有它们。如果对您有意义的话,也没有必要拥有多个应用程序,您可以在一个应用程序中完成所有任务。