Flask Web 开发 博客文章_5

49 篇文章 2 订阅
41 篇文章 3 订阅

这章节有点像用户认证那章节,知识点比较密集,终于最后一环节了


前面已经有了文章的固定url,那有时候用户或者管理员需要编辑文章,该怎么做呢?

前端的显示上面,肯定是有一个edit按钮的,后台也肯定需要一个特定的页面以供修改


首先先来编辑前端的显示吧,一般都是点编辑按钮以后,进入可以重新修改文章的页面,也没什么特别的,关键是输入文本框

所以新建一个edit_post.html

浏览器抬头和主题修改一下,再引入表单,而表单就是原来那个pagedown的表单

{% extends "base.html" %}
{% import "bootstrap/wtf.html" as wtf %}

{% block title %}Flasky - Edit Post{% endblock %}
{% block page_content %}

<div class = "page-header">
	<h1>Edit Post</h1>
</div>

<div>
	{{wtf.quick_form(form)}}
</div>

{% endblock %} 

{% block scripts %}
{{super()}}
{{pagedown.include_pagedown()}}
{% endblock %}

前段做好,后端需要一个路由来分配,如下,隐居每篇文章的id来进行url的定义

如果当前用户不是作者本人,且当前用户没有管理员的权限,则报错403

其他情况允许修改

@main.route('/edit/<int:id>',methods=['GET','POST'])
@login_required
def edit(id):
	post = Post.query.get_or_404(id)
	if current_user != post.author and not current_user.can(Permission.ADMINISTER):
		abort(403)
	form = PostForm()
	if form.validate_on_submit():
		post.body = form.body.data
		db.session.add(post)
		flash('The post has been updated.')
		return redirect(url_for('post',id = post.id))
	form.body.data = post.body
	return render_template('edit_post.html',form = form)


最后,在_posts.html这个显示所有文章列表的宏里面,也需要修改代码,以添加edit按钮和管理员的edit按钮


<div class="post-footer">
....
				{% if current_user == post.author %}	
				<a href = "{{ url_for('.edit',id = post.id)}}">
					<span class = "label label-primary">Edit</span>
				</a>
				{% elif current_user.is_administrator() %}
				<a href = "{{ url_for('.edit',id = post.id)}}">
					<span class = "label label-danger">Edit [Admin]</span>
				</a>
				{% endif %}

最后,来看一下效果图


作为管理员,我在页面上可以看到edit按钮和edit admin的按钮,然后按进去以后,就会导入到编辑页面了,可以修改页面内容














  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值