使用Flask的Python中的trim()函数

时间:2017-11-30 08:03:52

标签: python flask trim

python中是否有类似trim()的函数?

我使用Flask miniframework并且它不接受:

selected_student = (request.args.get('student_form')).strip()

错误:AttributeError: 'NoneType' object has no attribute 'strip'

selected_student.replace(" ", "")

错误:AttributeError: 'NoneType' object has no attribute 'replace'

我需要一个类似trim()的函数,而不需要编写类/子类或javascript

2 个答案:

答案 0 :(得分:1)

您看到的错误是因为无数据从表单传递到Flask服务器。您对request的使用返回None值类型而不是str

您为表单发布了以下HTML标记:

<form action="/student" method='POST'>
    <select name="student_form ">
        {% for student in students_list %}
            <option value="{{student}}">{{student}}</option>
        {% endfor %}
    </select>
<input type='submit' value='submit' />
</form>

因此,你需要Flask的某个地方在服务器端获取这些数据,例如:

@app.route('/student', methods=['POST'])
def receive_student_form_data:
    my_selection = str(request.form.get('student_form')).strip()
    print(my_selection)

只是为了澄清我为什么以这种方式创建我的方法:我注意到你正在使用request.args.get()来检索表单发送的值。这是不正确的。

request.args用于从URL中检索键/值对 request.form用于从HTML表单中检索键/值对。

所以我建议你改用request.form.get('student_form')。如果您确实希望确定它在Flask服务器检索时被转换为str,那么您可以将其转换为str,如下所示:

str(request.form.get('student_form'))

然后,正如少数人已经建议的那样,您可以使用.strip()方法删除任何尾随空格。

答案 1 :(得分:0)

有一个 strip()方法。您得到的错误是因为您尝试在 NoneType 对象上运行它。您需要在字符串对象上运行它。

>>> s = 'some string   '
>>> s.strip()
'some string'

还有字符串替换:

>>> s.replace('some', 'many')
'many string   '

您遇到的问题与其他问题有关。您以None对象结束,而不是您想要获得的对象。