Мне также очень не нравятся длинные файлы.
Конечно, то, что вы читаете в других ответах, правда, но я использую некоторую очень изящную эквивалентность 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
и т.д.
хотя, конечно, ограничений нет (URL-адреса тоже могут быть разделены и т. Д.)