在flas中找不到按其slug/title查看帖子的方法

2024-09-27 09:35:14 发布

您现在位置:Python中文网/ 问答频道 /正文

他们是否可以通过标题而不是id来查看文章?你知道吗

我试图让它显示,但我一直失败,你会如何使用slugifier或urlhelper他们,请原谅我,我还是相当新的python。你知道吗

视图.py

@app.route('/posts/<title>')
@login_required
def show(title):
    mytitle = Post
    link = db.session.query(mytitle).filter_by(title = title).one()
    return render_template("post.html", post=Post.query.get(id), pid=id, link=title)

型号.py

class Post(db.Model):
    __tablename__ = "posts"
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(80))
    body = db.Column(db.Text)



    def __init__(self, title, body):
        self.title = title
        self.body = body

所以我很困惑


Tags: pyselfid标题dbtitledeflink
1条回答
网友
1楼 · 发布于 2024-09-27 09:35:14
@app.route('/posts/<title>')
@login_required
def show(title):
    mytitle = Post
    link = db.session.query(mytitle).filter_by(title = title).one()
    return render_template("post.html", post=Post.query.get(id), pid=id, link=title)

为了让上面的代码像你希望的那样工作,我会做一些修改

  1. mytitle = Post<;==这一行完全没有必要,而且有点混乱,我将删除它

  2. 然后您需要将引用更改为mytitlePost
    所以改变
    link = db.session.query(mytitle).filter_by(title = title).one()

    link = db.session.query(Post).filter_by(title = title).one()

  3. 你没有得到你想要的东西的真正原因是最后一行,特别是post=Post.query.get(id),它只是通过它的id来加载文章,尽管我不知道它从哪里得到id,但是是的,主要的解决方法是评论者建议把我刚才提到的部分改成post=link,因为你的设置链接到你当前的发布。你知道吗

所以总的来说应该是这样的:

@app.route('/posts/<title>')
@login_required 
def show(title):
    link = db.session.query(Post).filter_by(title = title).one()
    return render_template("post.html", post=link, pid=id, link=title)

相关问题 更多 >

    热门问题