【发布时间】:2020-11-26 13:19:21
【问题描述】:
所以我试图用 Postman 做一些 json 请求。这是我的代码:
def create_app():
app = Flask(__name__)
@app.route('/', methods=['POST'])
def index():
news_site = request.get_json()
print(news_site)
if news_site.get('kompas', True) & news_site.get('detik', True) == True:
scrapdata = kompas_fun(), detik_fun()
return jsonify(scrapdata)
elif news_site.get('kompas', True) & news_site.get('detik', False) == True:
scrapdata = kompas_fun()
return jsonify(scrapdata)
elif news_site.get('kompas', False) & news_site.get('detik', True) == True:
scrapdata = detik_fun()
return jsonify(scrapdata)
else:
return jsonify({'value': 'error'})
return app
if 条件有效,但不知道为什么忽略了两个elif 条件,然后当输入为kompas=True, detik=False 或kompas=False, detik=True 时直接转到else。我已经尝试不使用== True,将& 替换为and,但仍然相同。这是news_site打印和终端输出的结果:
(env) PS D:\demotest> flask run
* Serving Flask app "run.py" (lazy loading)
* Environment: development
* Debug mode: on
* Restarting with stat
* Debugger is active!
* Debugger PIN: 318-319-173
* Running on http://127.0.0.1:8080/ (Press CTRL+C to quit)
{'kompas': False, 'detik': True}
127.0.0.1 - - [26/Nov/2020 20:05:48] "POST / HTTP/1.1" 200 -
{'kompas': True, 'detik': False}
127.0.0.1 - - [26/Nov/2020 20:06:03] "POST / HTTP/1.1" 200 -
{'kompas': True, 'detik': True}
第一个和第二个输入产生else 输出。但是第三个执行得很完美。我不明白为什么。任何帮助将不胜感激。
【问题讨论】:
-
&是按位与。使用and -
还是一样的结果。我第一次使用
and,然后再尝试使用&