Je construis une application flask qui se déploie sur AWS Lambda en utilisant zappa et j'essaie d'utiliser Flask-s3 pour gérer les fichiers statiques. Je ne l'ai jamais utilisé [Flask-S3] [1] avant et il semblait assez simple mais je reçois ...AttributeError: l'objet 'FlaskS3' n'a pas d'attribut 'url_for'
AttributeError: 'FlaskS3' object has no attribute 'url_for'
Ils je comprends comme il vous suffit de remplacer votre URL statique est avec url_for comme ceci:
app.config['FLASKS3_BUCKET_NAME'] = 'mybucketname'
s3 = FlaskS3(app)
s3.url_for('static/file.jpg')
Ce ne fonctionne pas si bien que je fais quelque chose de mal, mais il n'y a presque rien dépannage en ligne Flask-s3. Tout est utile.
app = Flask(__name__)
Bootstrap(app)
app.config['FLASKS3_BUCKET_NAME'] = 'mybucketname'
s3 = FlaskS3(app)
MAILGUN_API_KEY = 'key'
auth = ('api', MAILGUN_API_KEY)
@app.route("/", methods=['GET', 'POST'])
def index():
context = {
'image': url_for('static/property_home.jpeg'),
'heading': 'We sell property - At a discount!',
'landing_video': url_for('static/intro.mp4')
}
form = forms.OptIn()
if form.validate_on_submit():
validate = requests.get(
"https://api.mailgun.net/v3/address/private/validate",
auth=auth,
params={"address": form.email.data})
if validate.json()['did_you_mean'] is not None:
flash('Did you mean {}?'.format(validate.json()['did_you_mean']))
elif validate.json()['is_valid'] == True and validate.json()['is_role_address'] == False and validate.json()['is_disposable_address'] == False:
r = requests.post(
"https://api.mailgun.net/v3/lists/YOUR_DOMAIN_NAME/members",
auth=auth,
data={'subscribed': True,
'address': form.email.data})
if r.status_code == 200:
requests.post('https://api.mailgun.net/v3/YOUR_DOMAIN_NAME/messages',
auth=auth,
data={"from": '[email protected]',
"to": form.email.data,
"subject": "Welcome to Spokane Discount Properties",
"html": open('templates/indoc.html'),
"o:tag": 'indoctrinated'})
flash('Thanks, we will notify you when we have more properties')
else:
flash('You are already subscribed, we will notify you when more properties are available')
else:
flash('Holy guacamole! Best check yo self, this is not a valid email.')
return render_template('index.html', form=form, context=context)
Merci @Mekicha mais j'avais déjà essayé simplement en utilisant 'url_for' par lui-même. Je reçois alors 'BuildError: Impossible de créer l'URL pour le point de terminaison' – freefly0313
J'ai besoin de voir votre code pour pouvoir vous aider. 'url_for' s'attend à une fonction principalement. – Mekicha
Merci encore. J'ai ajouté mon code pour vous – freefly0313