Как автоматически загрузить данные внутри класса viewset на сервер? - PullRequest
0 голосов
/ 17 января 2019

У меня был запущенный бэкэнд-проект Django на EC2, Ubuntu18.04, nginx. По сути, когда я тестирую проект локально, запуская «python manage.py runserver», я вижу, что матрица, которую я хочу сгенерировать, загружена до того, как сервер будет готов к работе. Однако после того, как я развернул его на сервере, он вернул ошибку, что представления не имеют атрибута с именем «матрица».

Я попробовал локально, и я могу видеть свои отпечатки, чтобы он действительно генерировал матрицу. Однако я не могу отладить проект так же, как я делал это локально, так как я автоматически запускаю проект, устанавливая файл .conf.

module 'test.views' has no attribute 'matrix'

class CreateMatrixViewSet(viewsets.ModelViewSet):
    serializer_class = MatrixSerializer
    queryset = Matrix.objects.all()

    print("start creating ls_frame")
    global ls_frame
    ls_frame = read_frame(queryset)
    print("end creating ls_frame")
    print("start creating matrix")
    global matrix
    matrix = generateMatrix(ls_frame)
    print("end creating matrix")
    http_method_names = ['post']

    def create(self, request):
        ...

Я предполагаю, что при работе на сервере он не будет выполнять начальную загрузку. Так что, если я хочу что-то сгенерировать до того, как я подготовлю сервер, что мне делать?

1 Ответ

0 голосов
/ 17 января 2019

В этом коде много проблем, и я не вижу, как он мог работать локально. Чтобы пометить переменную как глобальную, нужно сначала определить ее на уровне модуля. Но вы никогда, никогда не должны использовать глобальные переменные в многопользовательской среде, такой как Django; и, конечно, не как атрибуты класса, это не имеет никакого смысла.

Корень вашей проблемы в любом случае - попытка запустить код на уровне класса. Опять же, это не имеет смысла. Я не понимаю, почему вы пытаетесь запустить read_frame и generateMatrix там; Вы должны запустить их внутри метода (я не могу сказать вам, какой метод, так как я понятия не имею, что вы пытаетесь сделать с результатами.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...