不明白为什么它会起作用,所以我不能改变它:
我ImageUploadField
在表单中使用 Flask-Admin,该字段是这样的:
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'
当然它会引发 a 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
。