Im building my first Django app. I want to call a javascript function that receives a list of strings. In my current version Im sending a Django object (called provider) property like this and it´s working fine:
<a href="#" class="button secondary tiny" onclick="download_provider_files('{{ provider.full_name }}')"><i class="fi-download"></i></a>
But now I want to call a Provider model method that returns a list of strings, so then I can do something with this list in Js method
def get_provider_files_urls(self):
provider_files = self.provider_files.all()
file_list = []
for f in provider_files:
file_list.append(f.file.name)
return file_list
I tried this:
<a href="#" class="button secondary tiny" onclick="download_provider_files('{{ provider.get_provider_files_urls }}')"><i class="fi-download"></i></a>
and got this error:
Uncaught SyntaxError: missing ) after argument list
A quick and dirty way to generate a JS array from a list is to use the join
filter
onclick="download_provider_files(['{{ provider.get_provider_files_urls|join:"', '" }}'])"
Probably cleaner to use the json_script
filter though