FileView.get() отсутствует 1 требуемый позиционный аргумент: 'request' - класс FileView

Итак, я хочу вызвать функцию func в html. но когда я нажимаю на кнопку, появляется сообщение об ошибке. что я хочу, так это сохранить байты в строку и сохранить ее в файле text. f содержит b'5&\xd7\x8c', это результат шифрования

FileView.get() missing 1 required positional argument: 'request'

>

я не знаю, что не так, может кто-нибудь проверить это, пожалуйста?

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

class FileView(View):

    def get(f, self, request, *args, **kwargs):
        return HttpResponse(f, content_type='text/plain', headers={'Content-Disposition': 'attachment; filename=file.txt'})

def homepage(request):
    form = AudioForm()
    if request.method == "POST":
        form = AudioForm(request.POST, request.FILES)
        if form.is_valid():
            form.save()
            last_audio = Audio_store.objects.all().last()
            plaintext = Audio_store.objects.all().values_list('password').last()
            key = Audio_store.objects.all().values_list('key').last()
            pt = plaintext[0]
            ky = key[0]
            print(pt)
            print(ky)
            context={'form':form, 'last_audio':last_audio}
            enc = encrypt(ky, pt)
            print(enc)
            download = create_file(enc)
            print(download)
            return render(request, "homepage.html", context)

    context={'form':form}
    return render(request, "homepage.html", context=context)

в урлах:

path("", views.homepage, name="homepage"), # to call homepage
path("", views.encrypt, name="homepage"),
path("create_file", views.FileView.as_view(), name="create_file"),

в html вызывается:

<a href="{% url 'create_file' %}">
                                            Download
                                        </a>

Следующее неверно; пожалуйста, ознакомьтесь с классами python.

class FileView(View):

    def get(f, self, request, *args, **kwargs):
        return HttpResponse(f, content_type='text/plain', headers={'Content-Disposition': 'attachment; filename=file.txt'})

Первый аргумент всегда должен быть self. ->

class FileView(View):

    def get(self, *args, **kwargs):
        # Request is not needed in the arguments. Access it with:
        self.request
        # Generate the file here. 
        # Where did you expect it to appear from?
        return HttpResponse(f, content_type='text/plain', headers={'Content-Disposition': 'attachment; filename=file.txt'})

https://docs.python.org/3/tutorial/classes.html#class-and-instance-variables

Вернуться на верх