python - 为什么Flask中的错误“AttributeError:'NoneType'对象没有属性”有时会触发,而不是经常触发?
问题描述
构建一个 Flask 应用程序,并尝试按日期/受欢迎程度更改条目/卡片的选择。我被困在这里,因为这个错误不是恒定的,它偶尔会触发。我希望我能让这个排序功能正常工作然后解决这个问题,我认为这只是一个小错误。但是,现在错误更频繁地触发,我担心我只是将时间完全浪费在这种方法上;但我不知道。
应用程序.py
def tester(page):
limit = 6
offset = (int(page) - 1) * limit
requested = request.args.get('fromHTMLchoice')
print(requested)
requestChoice = requested.split()
a = requestChoice[0]
b = requestChoice[1]
convertChoice = tuple(a[2:-2], int(b[:-1]))
sagas_pages = sagas.find().sort(
[convertChoice]).skip(offset).limit(limit)
return render_template(
"tester.html",
sagas_pages=sagas_pages, page=page
)
HTML
<form class="form-inline" method="GET" action="{{url_for('tester', page=1)}}">
<div class="form-group">
<div class="input-group">
<span class="input-group-addon">Please select</span>
<select name="fromHTMLchoice" class="selectpicker form-control">
<option value= "('totalLikes', -1)">Likes</option>
<option value= "('totalLikes', 1)">Dislikes</option>
<option value= "('_id', -1)">Most_Recent</option>
<option value= "('_id', 1)">Least_Recent</option>
</select>
</div>
<button type="submit" class="btn btn-default">Go</button>
</div>
</form>
错误
None
127.0.0.1 - - [17/Jul/2020 18:07:40] "GET /tester/1 HTTP/1.1" 500 -
Traceback (most recent call last):
File "/workspace/.pip-modules/lib/python3.7/site-packages/flask/app.py", line 2464, in __call__
return self.wsgi_app(environ, start_response)
File "/workspace/.pip-modules/lib/python3.7/site-packages/flask/app.py", line 2450, in wsgi_app
response = self.handle_exception(e)
File "/workspace/.pip-modules/lib/python3.7/site-packages/flask/app.py", line 1867, in handle_exception
reraise(exc_type, exc_value, tb)
File "/workspace/.pip-modules/lib/python3.7/site-packages/flask/_compat.py", line 39, in reraise
raise value
File "/workspace/.pip-modules/lib/python3.7/site-packages/flask/app.py", line 2447, in wsgi_app
response = self.full_dispatch_request()
File "/workspace/.pip-modules/lib/python3.7/site-packages/flask/app.py", line 1952, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/workspace/.pip-modules/lib/python3.7/site-packages/flask/app.py", line 1821, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/workspace/.pip-modules/lib/python3.7/site-packages/flask/_compat.py", line 39, in reraise
raise value
File "/workspace/.pip-modules/lib/python3.7/site-packages/flask/app.py", line 1950, in full_dispatch_request
rv = self.dispatch_request()
File "/workspace/.pip-modules/lib/python3.7/site-packages/flask/app.py", line 1936, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/workspace/sagacity/app.py", line 94, in tester
requestChoice = requested.split()
AttributeError: 'NoneType' object has no attribute 'split'
解决方案
那 AttributeError 是问题的下游。调试的问题是为什么
requested = request.args.get('fromHTMLchoice')
print(requested)
某人打印None
,就像在日志顶部一样。安全的赌注是,不知何故,tester
是通过没有fromHTMLChoice
参数的 URL 调用的。
推荐阅读
- java - 子字符串(java)不像我预期的那样工作
- javascript - 如何遍历json数据并合并具有相同状态ID的行?
- javascript - 制表符读取日期格式的未知文件
- javascript - 尝试根据当前 Iframe URL 显示 Iframe
- python - 带有 WHERE 子句的 pymysql SELECT
- vb.net - 函数中应该使用 ByRef 吗?
- sql-server - 将消息标记为已查看
- docker - 使用 Kubeadm 为 Helm 初始化 Tiller - Kubernetes
- swift - 我需要帮助将 facebook 分享添加到我的 ios 应用程序中
- android - 了解android上服务的内存管理