Closed highwindmx closed 6 years ago
It depends on the tool you use. For example, if you use Flask-WTF and Flask-SQLAlchemy, then the save/upload operation will just like any normal form input:
import os
from flask import Flask, render_template
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import DataRequired
from flask_sqlalchemy import SQLAlchemy
from flask_ckeditor import CKEditor, CKEditorField
app = Flask(__name__)
app.secret_key = 'secret string'
ckeditor = CKEditor(app)
db = SQLAlchemy(app)
class Post(db.Model): # database model class
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(64))
body = db.Column(db.Text)
class PostForm(FlaskForm): # form class
title = StringField('Title')
body = CKEditorField('Body', validators=[DataRequired()])
submit = SubmitField('Submit')
@app.route('/write', methods=['GET', 'POST'])
def write():
form = PostForm()
if form.validate_on_submit(): # create new post
title = form.title.data
body = form.body.data
post = Post(title=title, body=body) # create record instance
db.session.add(post) # add to database session
db.session.commit() # commit change into database
return render_template('post.html', title=title, body=body)
return render_template('write.html', form=form)
@app.route('/edit/<int:post_id>', methods=['GET', 'POST'])
def edit(post_id):
post = Post.query.get_or_404(post_id) # query post in database
form = PostForm()
if form.validate_on_submit(): # edit/update created post
post.title = form.title.data # set new value
post.body = form.body.data # set new value
db.session.commit() # commit change into database
return render_template('post.html', title=title, body=body)
form.body.data = post.body # preset the form input data
return render_template('edit.html', form=form)
You can check Flask-SQLAlchemy's documentation for more infomation.
Great work Do you have a demo about how to save/upload the edited content