플라스크-WTF의에 documentation 상태 데이터 속성을 설정하지 않습니다플라스크-WTF 및 FileField는 것을 WERKZEUG FileStorage의 인스턴스
플라스크-WTF는 파일 업로드를 처리하는 당신에게 및 FileField을 제공하며, 자동으로 플라스크에서 데이터를 그릴 것입니다 양식이 게시되면 .request.files. FileField의 데이터 속성은 Werkzeug FileStorage의 인스턴스가됩니다. 내가
FileField
를 사용할 때
그러나, 게시 후 data
속성은 FileStorage
개체가 아닙니다. 대신 None
(문서에 제안 된대로 enctype="multipart/form-data"
으로 양식을 정의한 경우) 또는 파일 이름을 문자열로 정의합니다 (enctype
을 정의하지 않은 경우).
{% from "_form.html" import render_field %}
{% block body %}
<section class="page-width-container" id="offset-content">
<div id="utility-box">
<h1 class="utility-header">Settings</h1>
{{ message }}
<form action="/settings" method="post" enctype="multipart/form-data">
{{ render_field(form.photo) }}
<input type="submit" class="form-action" value="Save" />
</form>
</div>
</section>
{% endblock %}
_form.html 매크로 : 다음 enctype
와
from flask import Blueprint, render_template, request
from flask.ext.wtf import Form
from flask.ext.wtf.file import FileField, FileRequired
settings_bp = Blueprint('settings', __name__)
class SettingsForm(Form):
photo = FileField('Photo', validators=[
FileRequired('no file!'),
])
@settings_bp.route('/settings', methods=['GET', 'POST'])
def login():
form = SettingsForm(request.form)
form.validate_on_submit()
print(type(form.photo.data))
return render_template('settings.html', form=form, message=form.photo.data)
: 여기
{% macro render_field(field) %}
<div class="field">
{{ field.label }}
<span class="form-input">{{ field()|safe }}</span>
<div class="clear"></div>
{% if field.errors %}
<ul class="errors">
{% for error in field.errors %}
<li>{{ error }}</li>
{% endfor %}
</ul>
{% endif %}
</div>
{% endmacro %}
그리고 파이썬은 여기
는 관련 Jinja2 템플릿입니다 속성의form
요소이면 인쇄 유형은
NoneType
입니다.
enctype
특성이없는 경우 인쇄 유형은
unicode
입니다. 문서에 의해 광고 된
FileStorage
개체도 아닙니다.
안녕하세요. form.py의 소스에서 참조하는 지점을 찾을 수 없습니다. 좀 더 자세한 정보가 있습니까? –