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