python - AssertionError:视图函数映射正在覆盖现有端点函数:newRoom
问题描述
我正在创建一个游戏。我想要它让玩家调用“room/new_game”,为他们创建一个新的 URL,并呈现一个新的 newroom.html。第一次一切都很好,但如果另一个用户尝试托管自己的房间,我会收到错误消息。
这是我想要的示例过程:
客户端访问 index.html 并点击与“@app.route('/room/new_game', methods=['POST'])”关联的“主机游戏”。
服务器创建一个新的游戏对象,它有房间代码:aaaa。
服务器为那个房间创建一个新的 url。类似“/room/aaaa”的东西。
服务器将房间代码发送给客户端。
客户去 /room/aaaa。
这是我的代码
@app.route('/')
def index():
return render_template("index.html", server=server)
@app.route('/room/new_game', methods=['POST'])
def newGame():
game = Games.Game
result = {}
result["game_code"] = game.room_code
@app.route('/room/' + game.room_code)
def newRoom():
return render_template("newroom.html", room_code=game.room_code.upper())
return jsonify(result)
错误
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/flask/app.py", line 2292, in wsgi_app
response = self.full_dispatch_request()
File "/usr/lib/python3/dist-packages/flask/app.py", line 1815, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/ianc/.local/lib/python3.7/site-packages/flask_cors/extension.py", line 165, in wrapped_function
return cors_after_request(app.make_response(f(*args, **kwargs)))
File "/usr/lib/python3/dist-packages/flask/app.py", line 1718, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/usr/lib/python3/dist-packages/flask/_compat.py", line 35, in reraise
raise value
File "/usr/lib/python3/dist-packages/flask/app.py", line 1813, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/lib/python3/dist-packages/flask/app.py", line 1799, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/home/ianc/Documents/OneNightUltimateWerewolf/test.py", line 35, in newGame
@app.route('/room/' + game.room_code)
File "/usr/lib/python3/dist-packages/flask/app.py", line 1250, in decorator
self.add_url_rule(rule, endpoint, f, **options)
File "/usr/lib/python3/dist-packages/flask/app.py", line 66, in wrapper_func
return f(self, *args, **kwargs)
File "/usr/lib/python3/dist-packages/flask/app.py", line 1221, in add_url_rule
'existing endpoint function: %s' % endpoint)
AssertionError: View function mapping is overwriting an existing endpoint function: newRoom
192.168.14.15 - - [03/Mar/2021 00:51:30] "POST /room/new_game HTTP/1.1" 500 -
解决方案
代替
@app.route('/room/' + game.room_code)
def newRoom():
return render_template("newroom.html", room_code=game.room_code.upper())
return jsonify(result)
和
redirect(url_for('newRoom'))
查看此文档https://flask.palletsprojects.com/en/1.1.x/quickstart/#redirects-and-errors了解更多详细信息。
推荐阅读
- excel - 如何将工作表作为值复制到另一个工作表
- android - Android FlexBox 布局仅显示固定数量的行
- windows - 脚本运行时 PowerShell 更新变量
- c# - 实现一个接口,该接口继承自两个具有相同方法的接口
- python-3.x - 如何使用 BeautifulSoup 更新具有不同值的 XML 的所有子子标签
- excel - 我希望能够“锁定”或“保护”我使用密码“x”正确选择的单元格的内容
- python - Python 身份验证返回 401
- python - 设置虚拟环境后如何选择不同的python版本?我在win10
- c# - C#问题发送和接收数据
- c# - SetSynchronizationContext 的生命周期是多少?