Как вернуть результат в html django

Я хочу сделать текстовый файл, содержащий b'Y\xf5\x11m' (это результат шифрования). И я хочу, чтобы txt файл можно было скачать с помощью html.

Но я получил следующую ошибку, когда я возвращаю его:

'int' object has no attribute 'get'

Вот код:

def create_file(f):
    with open("file.txt", 'w') as file:
        download = file.write(str(f))
        print(download)
        return download

Я вызвал эту функцию следующим образом:

#in views
download = create_file(enc)
print(download)

#in urls
path("create_file", views.create_file, name="create_file"),

#in html
<a href="{% url 'create_file' %}">

вы определяете функцию create_file, эта функция:

def create_file(f):
    with open("file.txt", 'w') as file:
        return file.write(str(f))

Эта функция получает в качестве параметра любую информацию и записывает ее в файл.

После этого вы определяете url:

path("create_file", views.create_file, name="create_file"),

это означает: у вас есть функция 'create_file', которая принимает request в качестве первого параметра вызова и возвращает HtmlResponseObject.

Я не вижу в вашем коде никакого представления, которое получает request, и отправляет обратно файл как HtmlResponseObject.body.

Я могу только представить:

в пути:

path("create_file", views.FileView.as_view(), name="create_file"),

в файле views.py:

class FileView(View):

    def get(self, request, *args, **kwargs):
        return HttpResponse(create_file('here your text to write in file'), content_type='text/plain', headers={'Content-Disposition': 'filename=file.txt'})
Вернуться на верх