В Django, как я могу вернуть сгенерированный динамически названный документ в качестве загрузки? - PullRequest
0 голосов
/ 08 октября 2019

Я создал страницу, которая принимает пользовательский ввод через поля формы, а затем берет эти данные и генерирует документ из информации. Он сохраняет его в указанном каталоге и использует данные формы для создания имени файла. Я пытаюсь затем перенаправить его, чтобы также загрузить этот файл. Функция в представлении страницы, которая указывает каталог и создает имя файла, называется 'makefileandpath ()'. Затем я создаю переменную 'docname' и вызываю функцию. Работает отлично. Моя проблема тогда в том, чтобы заставить эту переменную работать с возвратом документа в качестве загрузки. Я пытался создать различные функции для внутренней обработки, а также пытался создать другое представление и использовать его в качестве конечной точки ( все, что можно увидеть ниже ), но это не позволило мне вызватьимя переменной и документ могут называться как угодно. Я не уверен, как решить эту проблему, и я занимаюсь этим уже почти неделю.

1 Ответ

1 голос
/ 09 октября 2019

Исходя из комментариев к вопросу, я рекомендую вам рассмотреть возможность использования сеанса для хранения имени файла. Вероятно, это не так хорошо, как использование базы данных, но это может работать для вашего варианта использования.

Чтобы использовать сеанс, см. Примеры в документации . Установите имя файла где-нибудь в одном представлении:

def recruiterscreen(request):
    ...
    request.session['download-filename'] = filename
    ...

И проверьте это в другом представлении:

def download_file(request):
    ...
    filename = request.session.get('download-filename')
    if filename is None:
        print('no filename was set')
        # raise some kind of error or do some redirect
    else:
        # download file
    ...

Возможно, даже удалите имя файла из сеанса после загрузки, если вы хотитеубедитесь, что файл может быть загружен только один раз.

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