请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

标签添加及删除问题

当添加新标签时可以成功,但添加成功后再次点击添加则报错

https://img1.sycdn.imooc.com/szimg//598bc99b00014e0f08810114.jpg

而且此时点击tag_list页,该页也未更新。

只有重启服务器tag_list页才显示新加的标签,此时再次添加已有标签则可正常flash出添加失败的消息。

点击tag_list页的删除时报错(即使重启服务器也报错):

https://img1.sycdn.imooc.com/szimg//598bca3700012f3308210082.jpg

如下是view.py中有关标签的代码

# 添加标签
@admin.route('/tag/add/', methods=['GET', 'POST'])
@admin_login_req
def tag_add():
    form = TagForm()
    if form.validate_on_submit():
        data = form.data
        tag = Tag.query.filter_by(name=data['name']).count()  # 检查标签是否已经存在(标签具有唯一性)
        if tag == 1:  # 若存在,则提示并返回添加标签页
            flash('名称已经存在!', 'err'),
            return redirect(url_for('admin.tag_add'))
        tag = Tag(  # 若不存在,则进行入库保存
            name=data['name']
        )
        db.session.add(tag)
        db.session.commit()
        flash('添加标签成功!', 'ok')
        redirect(url_for('admin.tag_add'))
    return render_template('admin/tag_add.html', form=form)


# 标签列表:查询;分页显示
@admin.route('/tag/list/<int:page>/',methods=['GET'])
@admin_login_req
def tag_list(page=None):
    if page is None:
        page = 1
    page_data = Tag.query.order_by(
        Tag.addtime.desc()
    ).paginate(page=page, per_page=10)
    return render_template('admin/tag_list.html', page_data=page_data)

# 标签删除
@admin.route('/tag/del/<int:id>/',methods=['GET'])
@admin_login_req
def tag_del(id=None):
    tag = Tag.query.filter_by(id=id).first_or_404()
    db.session.delete(tag)
    db.session.commit()
    flash('添加标签成功','ok')
    return redirect(url_for('admin.tag_list', page=1))


正在回答

2回答

同学,你好,tag标签是不是重复添加了,name字段设置了唯一性!

# 标签
class Tag(db.Model):
    __tablename__ = "tag"
    id = db.Column(db.Integer, primary_key=True)  # 编号
    name = db.Column(db.String(100), unique=True)  # 标题
    addtime = db.Column(db.DateTime, index=True, default=datetime.now)  # 添加时间
    movies = db.relationship("Movie", backref='tag')  # 电影外键关系关联

    def __repr__(self):
        return "<Tag %r>" % self.name


0 回复 有任何疑惑可以回复我~
  • 提问者 慕无忌1371140 #1
    我是故意重复添加检验flash消息是否正常的,但结果是不重启服务器报错;只有重启服务器,flash提示重复的消息才能正常显示,这是不符合我们期望的啊
    回复 有任何疑惑可以回复我~ 2017-08-10 11:13:26
  • 提问者 慕无忌1371140 #2
    而且若不重启服务器,添加标签成功后tag_list页也没有显示新增加的标签,只有重启服务器tag_list也才能显示新标签
    回复 有任何疑惑可以回复我~ 2017-08-10 11:16:01
  • 提问者 慕无忌1371140 #3
    tag_list页显示新标签后,点击删除,仍然报错
    回复 有任何疑惑可以回复我~ 2017-08-10 11:16:42
提问者 慕无忌1371140 2017-08-10 12:00:37

admin_page.html

https://img1.sycdn.imooc.com/szimg//598bd9b9000118b219181047.jpg

forms.py

https://img1.sycdn.imooc.com/szimg//598bd9ba0001c3fb19181975.jpg

tag_add.html

https://img1.sycdn.imooc.com/szimg//598bd9ba0001918b19181722.jpg

tag_list.html

https://img1.sycdn.imooc.com/szimg//598bd9bc00014ca919182044.jpg

views.py

https://img1.sycdn.imooc.com/szimg//598bd9bd0001e23d19182254.jpg


0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信