From my testing, you should be able to use {{ trigger.calendar_event.location is defined }}, but if you want to be extra sure that a None doesn’t get through, or you want to exclude specific locations try:
{% if trigger.calendar_event.location is defined %}
{{ trigger.calendar_event.location not in [none, "Home", "Secret Location #1"] }}
{% else %}
False
{% endif %}
You’re confusing a templates output with using none in code. A simple test can show you that None is not a valid test in jinja. Although I was mistaken that you can use None as a non-test keyword. However, what you’re describing is not in code, you’re in the returned part of code.
fails with TemplateAssertionError: No test named 'None'.
{{ 1 is None }}
works
{{ 1 == None }}
Shouldn’t matter because you’re not executing none
{% if ... %}
None
{% endif %}
Sorry @Didgeridrew, using None in the list will work.
{{ none in [None, 1] }}
TLDR, when checking None as a test (selectattr, select, reject, rejectattr, is), you have to use none.