问题
I'm programming in oTree (which is a Django based environment for social experiments) and I have the following problem. I defined some lists in Python and I'd like to import them and use them in an HTML template. If I print them in HTML I manage to see them without any problem, however, once I need to use them in Javascript, the program fails to read them and the single quotes of the elements of the list are converted in '
.
The list is imported like this var filtered_elements = {{ array }};
.
I think the problem is exactly here, as JS cannot work with them. Do you have any suggestion on how to do that? I considered using JSON, but since I'm quite new to programming, I cannot understand if it's just a waste of time or there is a simpler way out. Thanks for your answers!
回答1:
It sounds like your data is already JSON, otherwise you would be getting single quotes and u
prefixes. So the only issue is Django autoescaping; you can disable it with the safe
filter:
var filtered_elements = {{ array|safe }};
回答2:
Your data should be JSON, instead of putting the Python list into the contact directly, put "array": json.dumps(array)
in the context dictionary.
The JSON string doesn't need HTML escaping inside a tag, but it does need JS escaping! Otherwise some string may include something like </script><script>absolutely anything goes here...
to run arbitrary JavaScript, if the JSON contains user data.
So use |escapejs
:
var filtered_elements = {{ array|escapejs}};
来源:https://stackoverflow.com/questions/41678583/how-to-read-python-list-in-javascript-in-a-django-template