我一直在阅读一些django教程,似乎所有视图函数都必须放在一个名为“views.py”的文件中,所有模型都放在“models.py”中。我担心我的view.py文件中可能会有很多视图函数,而models.py就是这种情况。
我对django应用程序的理解是否正确?
Django应用程序允许我们将常用功能分成不同的应用程序,并将视图和模型的文件大小保持在最低限度?例如:我的项目可以包含食谱(创建,更新,查看和搜索)和朋友应用程序,评论应用程序等应用程序。
我还可以将一些视图功能移动到其他文件吗?所以我只在一个文件中使用CRUD?
答案 0 :(得分:7)
首先,大文件在python中很常见。 Python不是java,每个文件有一个类,而不是每个文件一个模块。
接下来,views
,即使是使用的标准,也是 python模块。模块不必是单个文件。它可以是包含许多文件的目录,__init__.py
然后,views.py
只是一种惯例。 你,应用程序员指的是它,而django本身并没有在任何地方引用。因此,您可以自由地将其放入尽可能多的文件中,并在urls.py
答案 1 :(得分:1)
他们不必进入views.py。必须在那里引用它们。
views.py可以包含其他文件。因此,如果您觉得有必要,可以在一个包含视图函数的应用程序中创建其他文件,并将它们包含在views.py中。
同样适用于models.py。
Django应用程序让我们分开常见 功能到不同的应用程序和 保持视图和模型的文件大小 到最低限度?例如:我的项目 可以包含食谱的应用程序 (创建,更新,查看和搜索)和 朋友应用,评论应用等等 上。
我不知道“至少”部分 - 一些应用程序在视图中很大,而其他应用程序在模型中很重要。你应该努力对事情进行分区,但有时会有很多代码。但除此之外,这是Django应用程序的公平摘要,是的。
答案 2 :(得分:1)
我也非常不喜欢长文件。
当然你在其他答案中读到的是真的,但我利用了一些非常漂亮的python等价:
views.py
和
views/__init__.py
在功能上几乎相同 - 我的意思是,如果两者都包含def my_view()
那么
from views import my_view
在这两种情况下,都会起作用!
从那里可以轻松地将长文件构建为较小的文件,同时保持每个django开发人员习惯的命名约定:
views/__init__.py
views/largemodel_view.py
然后在__init__.py
中不要忘记从largemodel_view.py
导入视图。
对于大型应用程序,我会对模型执行相同操作,但您必须记住设置Meta.app_name
:
class MyModel(models.Model):
...
class Meta:
app_name = 'yourappname'
因为django不会神奇地接受它而不是管理员(但它仍会加载它,感谢Python!)
所以我的应用程序通常最终看起来像:
project/settings/__init__.py
/..othersettings..
/app_1/models/__init__.py
/...
/views/__init__.py
/...
/templates/
/static/
urls.py
/urls.py
等
虽然当然没有限制(网址也可以拆分,等等。)
答案 3 :(得分:0)
此question的答案可能对您有所帮助。