【发布时间】:2020-12-18 15:09:49
【问题描述】:
我正在尝试使用烧瓶和 sqlite3 创建一个社交网络。我创建了几乎所有主要内容,例如帖子、编辑帖子、删除帖子。但我也想为每个帖子添加点赞按钮。我已经创建了点赞号(有多少喜欢这篇文章)和点赞按钮,它工作正常,但是如果您第一次喜欢我的帖子并再次登录您的帐户,那么您可以再次喜欢您已经喜欢的那个帖子帐户。
我有一个想法来保存喜欢我的帖子的人,但我不知道如何在我的 webapp 中实现该确切代码。我使用的是 sqlite3,所以我没有找到任何解决此问题的方法。对于 mysql 或任何其他数据库,我发现完全相同的问题,但对于 sqlite3 却没有。
好的,这是我的想法, 我已经提到我正在使用 sqlite3,所以我创建了这样的表:
conn=sqlite3.connect('data/detailpost.db')
c=conn.cursor()
c.execute("""CREATE TABLE postdetail(
name text,
address text,
post text,
post_date text,
secretcode text,
mainname text,
likes integer,
likers text)""")
conn.commit()
conn.close()
如果有人点击喜欢按钮(在模板中),那么这将出现在后端的这一部分,我会在其中获得喜欢的主名称和该帖子的 oid 编号。这是相同的后端代码,增加了喜欢的帖子。像这样
@app.route('/social/post/like',methods=['POST'])
def likedofsocial():
if request.method=='POST':
oid=request.form['oid']
mainusernameofliker=request.form['username']
conn=sqlite3.connect('data/detailpost.db')
c=conn.cursor()
c.execute("SELECT *,oid FROM postdetail WHERE oid="+oid)
alldata=c.fetchall()
for rec in alldata:
c.execute("""UPDATE postdetail SET
name=:name,
address=:address,
post=:post,
post_date=:datee,
secretcode=:secret,
mainname=:mainname,
likes=:likes
likers=:likers
WHERE oid=:num""",
{
'name':rec[0],
'address':rec[1],
'post':rec[2],
'datee':rec[3],
'secret':rec[4],
'mainname':rec[5],
'likes':(int(rec[6]+1)),
'likers':mainusernameofliker,
'num':oid,
})
conn.commit()
conn.close()
.....
在上面这部分我不知道如何在likers 中保存多个mainusernameofliker,因为不会只有一个人喜欢我的帖子。
现在我只知道前端的想法,我没有尝试过下面提到的任何代码!我只是认为以下代码可以正常工作
"前端检查点赞数据和
(% if (your mainusername is in that likers data ) %)
then show already liked(Liked) or disable like button
(% else (your username is not in that likers data) %)
then that show like or make clickable like button".
(% endif %)
或许,我可以尽快得到帮助,我们将不胜感激。
【问题讨论】:
标签: python sqlite flask jinja2 web-development-server