なぜ機能するのか理解できないので、変更できません:
フォームでFlask-Admin を使用しImageUploadField
ています。フィールドは次のとおりです。
image = ImageUploadField(label='Optional image',
base_path=app.config['UPLOAD_FOLDER'],
relative_path=op.relpath(app.config['UPLOAD_FOLDER']),
endpoint='static'
)
endpoint='static'
はデフォルト値です。
endpoint
は次のように使用されflask_admin.ext.form.upload
ます。
def get_url(self, field):
if field.thumbnail_size:
filename = field.thumbnail_fn(field.data)
else:
filename = field.data
if field.url_relative_path:
filename = urljoin(field.url_relative_path, filename)
return url_for(field.endpoint, filename=filename)
だから、それは関数に渡されていurl_for()
ます...
その結果は、ファイル名のurl_for()
先頭に追加されるだけです。'static/'
設定しようとしたら
endpoint='some_string'
もちろん、それは発生しますBuildError
が、私がやろうとすると:
#admin.py
class ProductForm(Form):
order = IntegerField('order')
name = TextField('name')
category = SelectField('category', choices=[])
image = ImageUploadField(label='Optional image',
base_path=app.config['UPLOAD_FOLDER'],
relative_path=op.relpath(app.config['UPLOAD_FOLDER']),
endpoint='dumb_f'
)
def dumb_f(str=''):
return str
では が表示されBuildError
ないため、 も発生します。dumb_f()
upload.py
なぜ機能url_for()
するのですか?最初のパラメーターは関数の名前であるべきではありませんか? static
名前付きのメソッドはありませんupload.py
。