Raise error for when there is no header matching the specified row name from CSV

The issue is that when user clicks upload csv and picks a file and tries to submit the file. If the header of the file is not equal to "IP Address", then I get the debug menu from Django. The CSV file does not exist in any directory, so it is handled via upload, I was wondering what's best practice for raising an error, I have tried some methods below but still get the debug menu.

This is the forms.py class that handles the CSV form.

class CSVForm(forms.Form):
    csv_file = forms.FileField(required=True)

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.ips_from_csv = []

    def get_ips_from_csv(self):
        return self.ips_from_csv

    def clean_csv_file(self):
        csv_file = self.cleaned_data.get("csv_file")
        if not csv_file:
            return
        with csv_file.open() as file:
            reader = csv.DictReader(io.StringIO(file.read().decode("utf-8")))
            for row in reader:
                form_data = self.cleaned_data.copy()
                form_data["address"] = NetworkUtil.extract_ip_address(row["IP Address"])
                self.ips_from_csv.append(form_data["address"])

That is what currently works, below is the code that I have tried to implement, but I am no sure how to handle the error side of things.

if form_data["address"] != row["IP Address"]:
    print("Invalid")

and this

with open(file, "r") as inf:
     csv_reader = csv.DictReader(inf)
     for header in csv_reader:
         if header != row["IP Address"]:
            print("Invalid")
Back to Top