Загрузка файла разрешена только после отправки формы. В противном случае URL-адрес загрузки не должен быть доступен.
После входа пользователя в систему URL-адрес загрузки доступен напрямую. Как я могу ограничить это? Это создаст несколько записей для загрузки файла для одной и той же формы
models.py
class uploadmeta(models.Model):
path = models.ForeignKey(Mdform, verbose_name="ID", on_delete=models.PROTECT)
user = models.ForeignKey(get_user_model(), on_delete=models.CASCADE)
datafile = models.FileField(upload_to=get_upload_folder, verbose_name="Dataset", validators=[validate_file_extension])
def get_absolute_url(self):
return reverse('file_list', kwargs={'pk': self.pk})
views.py
if request.user.is_authenticated:
if request.method == 'POST':
form = uploadmetaform(request.POST, request.FILES)
if form.is_valid():
path = form.cleaned_data['path']
if uploadmeta.objects.filter(path=path).exists():
user = form.cleaned_data['user']
datafile = form.cleaned_data['datafile']
context = {
'path': path,
'user': user,
'datafile': datafile
}
template = loader.get_template('nameexists.html')
return HttpResponse(template.render(context, request))
else:
user = form.cleaned_data['user']
datafile = form.cleaned_data['datafile']
path = dict(form.fields['path'].path)[path]
print(path)
b = form(path=path, user=user, datafile=datafile)
b.save()
context = {
'path': path,
'user': user,
'datafile': datafile
}
template = loader.get_template('thankyou.html')
return HttpResponse(template.render(context, request))
else:
form = uploadmetaform()
return render(request, 'uploaddata.html', {'form': form})
else:
return render(request, 'home.html')```