我目前正在努力為我的 flaskblog 中的帖子添加圖片這是我的 routes.py 導入和 new_post 函數(shù)和路由import osimport secretsfrom PIL import Imagefrom flask import render_template, url_for, flash, redirect, request, abortfrom flaskblog import app, db, bcryptfrom flaskblog.forms import RegistrationForm, LoginForm, UpdateAccountForm, PostFormfrom flaskblog.models import User, Postfrom flask_login import login_user, current_user, logout_user, login_required@app.route("/post/new", methods=['GET', 'POST'])@login_requireddef new_post(): form = PostForm() if form.validate_on_submit(): if form.post_picture.data: image_post = form.post_picture.data post = Post(title=form.title.data, content=form.content.data, author=current_user, post_image=image_post) db.session.add(post) db.session.commit() flash('Your post has been created!', 'success') return redirect(url_for('home')) return render_template('create_post.html', title='New Post', post_image=post_image, form=form, legend='New Post')這是我的 forms.py 導入和 PostForm 類from flask_wtf import FlaskFormfrom flask_wtf.file import FileField, FileAllowedfrom flask_login import current_userfrom wtforms import StringField, PasswordField, SubmitField, BooleanField, TextAreaFieldfrom wtforms.validators import DataRequired, Length, Email, EqualTo, ValidationErrorfrom flaskblog.models import Userclass PostForm(FlaskForm): title = StringField('Title', validators=[DataRequired()]) content = TextAreaField('Content', validators=[DataRequired()]) post_picture = FileField('Add image to your post', validators=[FileAllowed(['jpg', 'png'])]) submit = SubmitField('Post')這是我的 models.py 文件和 Post 類from datetime import datetimefrom flaskblog import db, login_managerfrom flask_login import UserMixin
3 回答

江戶川亂折騰
TA貢獻1851條經(jīng)驗 獲得超5個贊
在你的 new_post 方法中你需要通過
return render_template('create_post.html', title='New Post', post_image=image_post, form=form, legend='New Post')
以非常相似的方式命名不同的變量會讓您的生活變得有點困難:image_post、post_image、post_picture 這很可能使您在代碼中混淆它們。

斯蒂芬大帝
TA貢獻1827條經(jīng)驗 獲得超8個贊
您的image_post
變量在 if 語句中分配return redirect(url_for('home'))
。
所以它不會被分配,如果你
return render_template('create_post.html', title='New Post', post_image=post_image, form=form, legend='New Post')
請記住,一個方法一次只返回一個東西。

明月笑刀無情
TA貢獻1828條經(jīng)驗 獲得超4個贊
我遇到了這個錯誤,我發(fā)現(xiàn)你需要編輯這個:
<div?class="content-section"> <form?method="POST"?action="">
對此:
<div?class="content-section"> <form?method="POST"?action=""?enctype="multipart/form-data">
就是這樣
添加回答
舉報
0/150
提交
取消