0
votes

i'm trying to create a registration page where on of the multiple users has to be to upload a file when registering a page but after following most tutorials nothing has been fruitful,to ensure the file being uploaded is sucessful kindly assist if you can I have tried the uploaded_file = request.Files['document], fs = FileSystemStorage[], file upload way i have also tried the if request.method == 'POST' and 'document' in request.FILES: uploaded_file = request.FILES['document'] way too among others. so

     views.py
        def DistributorSignUpView(request):
            if request.method == 'POST':
                form = DistributorSignUpForm(request.POST, request.FILES)
                if form.is_valid():
                    form.save()
                    username = form.cleaned_data.get('username')
                    messages.success(request, 'Account was created for ' + username)
        
                    context = ({'form': form})
        
                    return render(request, 'dashboard.html', context)
            else:
                form = DistributorSignUpForm()
            return render(request, "distregister.html", context={'form': form})
    
        **forms.py**
        class DistributorSignUpForm(UserCreationForm):
            Tax_compliance_certificate = forms.FileField(required=True)
        
            class Meta(UserCreationForm.Meta):
                model = User
                fields = ['username', 'email', 'password1', 'password2', 'Tax_compliance_certificate']
        
            @transaction.atomic
            def save(self):
                user = super().save(commit=False)
                user.is_distributor = True
                user.save()
                distributor = Distributor.objects.create(user=user)
            
    
        distributor.Tax_compliance_certificate.add(*self.cleaned_data.get('Tax_compliance_certificate'))
                return user
    
    **HTML**
    
        <form method="POST" enctype="multipart/form-data">
                                {% csrf_token %}
                                <div class="input-group mb-3">
                                    <div class="input-group-append">
                                        <span class="input-group-text"><i class="fas fa-user"></i></span>
                                    </div>
                                    {{form.username}}
                                </div>
                                <div class="input-group mb-2">
                                    <div class="input-group-append">
                                        <span class="input-group-text"><i class="fas fa-envelope-square"></i></span>
                                    </div>
                                    {{form.email}}
                                </div>
                                <div class="input-group mb-2">
                                    <div class="input-group-append">
                                        <span class="input-group-text"><i class="fas fa-key"></i></span>
                                    </div>
                                    {{form.password1}}
                                </div>
                                <div class="input-group mb-2">
                                    <div class="input-group-append">
                                        <span class="input-group-text"><i class="fas fa-key"></i></span>
                                    </div>
                                    {{form.password2}}
                                </div>
        
        
                                  <div class="file-field">
                                    <input type="file" hidden id="file">
                                      <input type="button" value="Upload Tax Cert" onclick="btnFile()" 
 class="btnFile" name ="document">
                                      <span id="filename" class="filename">No file chosen</span>
                                  </div>
        
        
                                <div class="d-flex justify-content-center mt-3 login_container">
                                    <input class="btn login_btn" type="submit" value="Register Account">
                                </div>
        
                            </form>
1

1 Answers

1
votes

You have to get a list of the files that were uploaded in the POST request

files_uploaded = self.request.FILES.getlist('my-file')

You then upload them to the server using Python's with functionality. You also need to give your input tag a name so you can locate that in the POST request.

<input name="my-file"...>