或者在 if 语句中 - 满足两个条件中的一个

or in if statement - one condition of the two met

这是我的代码:

s = "/test"
a = "/api/"

# path == "/api/"

if not request.path.startswith(s) or not request.path.startswith(a):
   print "is's ok!"

为什么我的print没有显示?

您的 print 语句实际上 总是 显示。那是因为两个测试中至少有一个 always 为真。如果路径以一个字符串开头,则不能以另一个字符串开头,因此如果两个条件之一为假,另一个肯定会为真:

>>> def tests(path):
...     print not bool(path.startswith('/test'))
...     print not bool(path.startswith('/api/'))
...
>>> tests('/api/')
True
False
>>> tests('/test')
False
True
>>> tests('')  # or any other string not starting with /test or /api/
True
True

您可能想改用 and,因此 两个 测试必须为真:

if not request.path.startswith(s) and not request.path.startswith(a):

或使用括号和一个 not,即如果路径不以任一选项开头,则仅执行 print

if not (request.path.startswith(s) or request.path.startswith(a)):