博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用 Flask 来写个轻博客 (22) — 实现博客文章的添加和编辑页面
阅读量:6104 次
发布时间:2019-06-21

本文共 3828 字,大约阅读时间需要 12 分钟。

Blog 项目源码:

目录

前文列表

新建表单

  • jmilkfansblog/forms.py
    博客文章的新建和编辑的表单非常简单, 只需要输入 title 和 content 就可以了.
class PostForm(Form):    """Post Form."""    title = StringField('Title', [DataRequired(), Length(max=255)])    text = TextAreaField('Blog Content', [DataRequired()])

新建视图函数

博客文章的添加和编辑仍然属于蓝图 blog 的功能集, 所以我们会在控制器 blog 模块中定义新的视图函数

  • jmilkfansblog/controller/blog.py
@blog_blueprint.route('/new', methods=['GET', 'POST'])def new_post():    """View function for new_port."""    form = PostForm()    if form.validate_on_submit():        new_post = Post(id=str(uuid4()), title=form.title.data)        new_post.text = form.text.data        new_post.publish_date = datetime.now()        db.session.add(new_post)        db.session.commit()        return redirect(url_for('blog.home'))    return render_template('new_post.html',                           form=form)@blog_blueprint.route('/edit/
', methods=['GET', 'POST'])def edit_post(id): """View function for edit_post.""" post = Post.query.get_or_404(id) form = PostForm() if form.validate_on_submit(): post.title = form.title.data post.text = form.text.data post.publish_date = datetime.now() # Update the post db.session.add(post) db.session.commit() return redirect(url_for('blog.post', post_id=post.id)) form.title.data = post.title form.text.data = post.text return render_template('edit_post.html', form=form, post=post)

NOTE 1: 添加博客文章时, 如果添加成功了就将输入到表单中的内容写入到数据库并将表单的数据传入 new_post 模板.

NOTE 2: 编辑博客文章时, 在表单的输入框中会含有原来的博客内容, 当编辑成功后会将新的博客内容写入数据库并重定向到文章页面.

新建模板

  • jmilkfansblog/template/blog/new_post.html
{% block title %}New Post{% endblock %}{% block body %}

Create A New Post

{
{ form.hidden_tag() }}
{
{ form.title.label }} {% if form.title.errors %} {% for e in form.title.errors %}

{

{ e }}

{% endfor %} {% endif %} {
{ form.title(class_='form-control') }}
{
{ form.text.label }} {% if form.text.errors %} {% for e in form.text.errors %}

{

{ e }}

{% endfor %} {% endif %} {
{ form.text(id="editor", class_='form-contril') }}
{% endblock %}{% block js %}{% endblock %}
  • jmilkfansblog/template/blog/edit_post.html
{% extends "base.html" %}{% block title %}Edit Post{% endblock %}{% block body %}

Edit the Post

{
{ form.hidden_tag() }}
{
{ form.title.label }} {% if form.title.errors %} {% for e in form.title.errors %}

{

{ e }}

{% endfor %} {% endif %} {
{ form.title(class_='form-control', value=post.title) }}
{
{ form.text.label }} {% if form.text.errors %} {% for e in form.text.errors %}

{

{ e }}

{% endfor %} {% endif %} {
{ form.text(id="editor", class_='form-contril') }}
{% endblock %}{% block js %}{% endblock %}

NOTE: 在模板 new_post 和 edit_post 中都加入了一个所见即所得 (WYSIWYG) 的博客文章编辑器 CKEditor, 该编辑器是一个 JavaScript 文件 <script src="//cdn.ckeditor.com/4.4.7/standard/ckeditor.js"></script>, CKEditor 的安装和使用都是非常方便的.

在博客文章页面添加 New 和 Edit 按钮

{% block body %}

{
{ post.title }}

Written By {

{ post.users.username }} on {
{ post.publish_date }}

{

{ post.text | safe }}

New
...

NOTE : 由编辑器 CKEditor 提交的博客文章内容会被转换成为 HTML 被存放在数据库中, 所以需要使用过滤器 safe 来过滤并显示在页面中.

实现效果

New 和 Edit 的按钮:

这里写图片描述
Create a new post:
这里写图片描述
Edit a new post:
这里写图片描述

转载于:https://www.cnblogs.com/jmilkfan-fanguiju/p/10589857.html

你可能感兴趣的文章
【Java】java基本知识
查看>>
之前学习wordpress的几张图片
查看>>
RT-Thread下的串口驱动程序分析【转载】
查看>>
UITableView的UITableViewStyleGrouped
查看>>
ecshop中getAll ,getOne ,getRow的区别
查看>>
Apple 企业开发者账号申请记录
查看>>
ecshop后台权限增加
查看>>
C#装饰者模式实例代码
查看>>
ASP.NET MVC显示异常信息
查看>>
第 9 章 MySQL数据库Schema设计的性能优化
查看>>
前nginx后Apache+Node反向代理
查看>>
Web前端开发十日谈
查看>>
Win7如何修改文件夹的默认视图,如何把详细信息改为平铺视图
查看>>
Win7如何设置标准账号无法访问我的D盘
查看>>
未来五年中国最热门的9大职业
查看>>
Ajax与JSON的一些总结
查看>>
C#操作XML文档(XmlDocument、XmlNode、XmlAttribute、SelectSingleNode、SelectNodes、XmlNodeList)...
查看>>
MYSQL 字符集 MYSQL 源码
查看>>
Android中libs目录下armeabi和armeabi-v7a的区别
查看>>
C/S与B/S区别
查看>>