2015-07-12 135 views
0

我是創建Web應用程序的新手,我決定從學習Flask開始。我將社交網絡作爲練習和學習一些基本技能的輔助項目。從流中刪除帖子

到目前爲止,我已經能夠構建一個用戶可以發佈的「Stream」,類似於Twitter。 我一直在努力尋找一種方法來允許用戶刪除帖子。我正在使用Peewee庫的SQLite數據庫。這是我曾嘗試:

@app.route('/delete_post/<int:post_id>') 
@login_required 
def delete_post(post_id): 
    delete = models.Post.select().where(models.Post.id == post_id) 
    try: 
     models.DATABASE.delete(delete) 
    except models.DoesNotExist: 
     abort(404) 
    else: 
     flash("This post has successfully been deleted.", "success") 
    return redirect(url_for('stream', stream = stream)) 

而且,這裏是一個郵政是如何創建的:

class Post(Model): 
    timestamp = DateTimeField(default=datetime.datetime.now()) 
    user = ForeignKeyField(
     rel_model= User, 
     related_name='posts' 
    ) 
    content = TextField() 
    class Meta: 
     database = DATABASE 
     order_by = ('-timestamp',) 

最後,存在這樣的情況,當使用選擇delete_post方法將被稱爲模板「刪除「

{% extends "base.html" %} 

{% block content %} 
{% for post in stream %} 
    <article> 
     <h2> 
      <a href="{{ url_for('stream', username=post.user.username) }}">{{ post.user.username }}</a> 
     </h2> 
     <i class="clock"></i> 
     <time> 
     {{ post.timestamp.strftime("%a, %d %b %Y %H:%M") }} 
     </time> 
     <a href="{{ url_for('view_post', post_id=post.id) }}" class="view">View</a> 
     <a href="{{ url_for('delete_post', post_id=post.id) }}" class="view" >| Delete</a> 

     <div class="post"> 
      {{ post.content }} 
     </div> 
    </article> 
{% endfor %} 
{% endblock %} 

如何刪除帖子?當我嘗試我的解決方案時,我得到:AttributeError: 'SqliteDatabase' object has no attribute 'delete' 我知道這個問題很囉嗦,但任何幫助將非常感激,並將在未來的項目中幫助我很多。讓我知道是否需要澄清其他事情。

謝謝!

+1

那麼真正的問題是什麼? – Boris

+0

我想知道如何去刪除帖子 –

+0

所以,再次,真正的問題是什麼?好像你知道如何刪除一篇文章,你只是寫了一篇文章。 – davidism

回答

1

刪除:

def delete_post(post_id): 
    try: 
     post = models.Post.select().where(models.Post.id == post_id).get() 
    except models.Post.DoesNotExist: 
     abort(404) 

    post.delete_instance() 
    flash("This post has successfully been deleted.", "success") 
    return redirect(url_for('stream', stream = stream)) 

或者,你可以寫:

def delete_post(post_id): 
    post = models.Post.delete().where(models.Post.id == post_id).execute() 
    flash("This post has successfully been deleted.", "success") 
    return redirect(url_for('stream', stream = stream)) 

編輯:我也只是想你指向文檔,涵蓋了各種主題。 .. http://docs.peewee-orm.com/en/latest/peewee/querying.html#deleting-records