3

なぜ機能するのか理解できないので、変更できません:

フォームで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

4

1 に答える 1