Используйте функцию из другого файла в Django views.py
Я создал целую функцию в моем Django views.py и она работает. Это выглядит следующим образом:
SOME IMPORTS
def get_campaigns(request):
SOME CODE
campaign_data = []
for batch in stream:
for row in batch.results:
data = {}
data["campaign_id"] = row.campaign.id
data["campaign_name"] = row.campaign.name
campaign_data.append(data)
return render(request, 'hello/get.html',{ 'data' : data })
Но потом я узнал, что размещение всех функций в файле views.py - не самая лучшая практика. Я должен переместить "большие" функции в другой файл и затем вызывать их в views.py, верно?
Так что я пробовал разные варианты и единственный, который сработал для меня, это скопировать точно такой же код в другой файл и затем добавить в мой views.py:
def index(request):
data = get_campaigns(request),
return render(request, 'index.html',{ 'data' : data })
Поэтому я повторяю одну и ту же строку (return render...) в обоих файлах. Это работает, но выглядит очень уродливо и, возможно, это медленно, глючно или даже небезопасно
Есть ли лучшее решение?
P.D.: Как вы можете догадаться из моего вопроса, я полный новичок и не очень понимаю, что делаю, поэтому любые указания на учебники для начинающих, связанные с этим, будут очень признательны. 😅
Не очень понятно, какой код куда идет, но я понимаю вашу проблему. Я помню, как писал ОГРОМНЫЙ views.py, когда начинал.
Я думаю, что то, что вы сделали, нормально. Вы также можете определить запрос для get, post и т.д. Хорошая практика.
Я предполагаю, что в вашей функции, которую вы импортируете, просто выполняется поток данных и не выполняется рендеринг страницы. Вы оставляете это на усмотрение view.py
Прошу прощения за то, что не комментирую и не отвечаю, моя репутация пока не позволяет мне этого делать.