首页 > 解决方案 > TypeError: unhashable type: 'set' in Flask Form

问题描述

我正在尝试从 Flask 中的表单中获取数据:

应用程序.py

@app.route('/newProjectCreation/', methods=['GET', 'POST'])
def newProjectCreation():
    try:
        if request.method == 'POST':
            # Data Fetch from Models Form
            name = request.form['modelName']
            modelDescription = request.form['modelDescription']
            inputType = request.form.getlist['inputType[]']
            outputType = request.form.getlist['outputType[]']
            model = request.files['model']
            modelLanguage = request.form['modelLanguage']

HTML

这是一个简单的表单(不是 Flask-WTF 表单),字段“ inputType ”和“ outputType ”应该返回数组,因为它们是动态输入字段

错误:

Traceback (most recent call last):
  File "/home/adiagarwal/cad/flaskapp-docker/flaskapp/app.py", line 106, in newProjectCreation
    inputType = request.form.getlist['inputType[]']
TypeError: 'method' object is not subscriptable

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/adiagarwal/cad/env/lib/python3.8/site-packages/flask/app.py", line 2464, in __call__
    return self.wsgi_app(environ, start_response)
  File "/home/adiagarwal/cad/env/lib/python3.8/site-packages/flask/app.py", line 2450, in wsgi_app
    response = self.handle_exception(e)
  File "/home/adiagarwal/cad/env/lib/python3.8/site-packages/flask/app.py", line 1867, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/home/adiagarwal/cad/env/lib/python3.8/site-packages/flask/_compat.py", line 39, in reraise
    raise value
  File "/home/adiagarwal/cad/env/lib/python3.8/site-packages/flask/app.py", line 2447, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/adiagarwal/cad/env/lib/python3.8/site-packages/flask/app.py", line 1952, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/adiagarwal/cad/env/lib/python3.8/site-packages/flask/app.py", line 1821, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/home/adiagarwal/cad/env/lib/python3.8/site-packages/flask/_compat.py", line 39, in reraise
    raise value
  File "/home/adiagarwal/cad/env/lib/python3.8/site-packages/flask/app.py", line 1950, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/adiagarwal/cad/env/lib/python3.8/site-packages/flask/app.py", line 1936, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/home/adiagarwal/cad/flaskapp-docker/flaskapp/app.py", line 129, in newProjectCreation
    return {{e}}
TypeError: unhashable type: 'set'

我没有js方面的经验,我正在学习,如果可能的话,请简化响应。

先感谢您。

标签: pythonformsflaskform-submit

解决方案


好的,我专注于一个大问题,但问题是如此简单以至于我没有意识到:全部替换[](). 见下文。

如果您[]假设为dict并且您正在返回列表或集合。

    @app.route('/newProjectCreation/', methods=['GET', 'POST'])
    def newProjectCreation():
        try:
            if request.method == 'POST':
                # Data Fetch from Models Form
                name = request.form('modelName')
                modelDescription = request.form('modelDescription')
                inputType = request.form.getlist('inputType[]')
                outputType = request.form.getlist('outputType[]')
                model = request.files('model')
                modelLanguage = request.form('modelLanguage')

推荐阅读