摘要:現在在首頁我們已經可以看到展示的問題了,我們再設計一個問題的詳情頁,通過點擊問題的標題進去,可以給問題添加評論或者回答。
現在在首頁我們已經可以看到展示的問題了,我們再設計一個問題的詳情頁,通過點擊問題的標題進去,可以給問題添加評論或者回答。
問題的詳情頁都使用一個名為"details.html"的模板,其網址我們設計成"/details/
@app.route("/details//") def details(question_id): question_obj = Questions.query.filter(Questions.id == question_id).first() return render_template("details.html", question=question_obj)
這部分代碼也很簡單,將url的參數question_id傳遞給函數,函數用question_id返回一個question模型的對象,并將其傳遞給模板,在模板中處理quesiton對象,包括解析其title/content/author以及對應的comments(在模型部分我們已經建立了Questions和Comments的關系和引用)。為首頁問題的title添加鏈接:
details.html核心代碼(其余部分繼承base.html)如下:
{% block body_part %}{{ question.title }}
作者:{{ question.author.username }} 時間:{{ question.create_time }}
{{ question.content }}
此時還沒有添加評論功能,我手動往數據庫寫了一條評論,來查看html的效果,如下:
我們再添加評論(或者說回答)的功能,其實就是加個POST表單,和注冊的邏輯是一樣的,為html增加下面的代碼,放在問題和評論之間:
評論({{ question.comments | length }}):
這里用了一個length過濾器來獲取comments的數量。修改detail視圖函數,為其增加POST方法如下:
@app.route("/question/", methods=["GET", "POST"]) def question(): if request.method == "GET": return render_template("question.html") else: if hasattr(g, "user"): question_title = request.form.get("question_title") question_desc = request.form.get("question_desc") author_id = g.user.id new_question = Questions(title=question_title, content=question_desc, author_id=author_id) db.session.add(new_question) db.session.commit() return redirect(url_for("home")) else: flash("請先登錄") return redirect(url_for("login"))
這部分與前面的文章中發布問答的視圖函數也是很像的,無需重復講解,經測試發布評論功能以及可以使用了。
最后美化界面如下:
補充:
由于在前文中我們的Comments模型通過以下代碼和Users/Questions都建立了關系:
author = db.relationship("Users", backref=db.backref("comments")) question = db.relationship("Questions", backref=db.backref("comments", order_by=create_time.desc()))
我們在新增comment的時候,這條代碼:
comment = Comments(content=content, question_id=question_id, author_id=g.user.id)
就可以改成:
comment = Comments(content=content) comment.author = g.user comment.question = Questions.query.filter(Questions.id == question_id).first()
雖然看上去長了,但可能更容易看出模型之間的關系了,anyway,兩種方式都是OK的。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/41284.html
摘要:創建了數據庫模型就要遷移數據庫,遷移數據庫的命令也在前面講過。如果表單對應有一個數據庫模型例如這里的評論表單對應著評論模型,那么使用類會簡單很多,這是為我們提供的方便。表明這個表單對應的數據庫模型是類。 創建評論應用 相對來說,評論其實是另外一個比較獨立的功能。Django 提倡,如果功能相對比較獨立的話,最好是創建一個應用,把相應的功能代碼寫到這個應用里。我們的第一個應用叫 blog...
摘要:在父頁面中文章詳情模板添加需要執行錨點拼接的函數新增函數,處理二級回復去除尾部符號刷新并定位到錨點函數中運用了的三元運算符,翻譯成人話就是如果成立則返回,如果不成立就返回。 老讀者注意:上一章消息通知有個bug,即發給管理員的notify必須移動到new_comment.save()的后面,否則會導致action_object存儲為NULL,并且導致本章的html拼接錨點失效。原文已...
摘要:后面兩個編輯器自帶,不用單獨下載,添上就可以了添加相關插件這樣就完成了代碼高亮效果不錯在前臺使用為了讓用戶在前臺也能使用富文本編輯器,還得對代碼稍加改動。對于有些不喜歡的人來說,甚至可以連博文都使用提供的富文本編輯器。 前面我們已經實現了用Markdown語法寫文章了。但是文章的評論用Markdown就不太合適了,你不能強求用戶也花時間去熟悉語法啊。另外評論中通常還有表情、帶顏色的字體...
摘要:如果有什么可以幫到你的無論是不是此項目中的問題都可以在提出我會盡我所能幫你解決歡迎大佬們提出好的問題和點子,我會第一時間去修正。 前言 本項目(友租)是基于Vue2、Vuex、Muse-UI、es6、webpack構建的一個移動端、PC端輕社區項目 項目地址GitHub 項目更新歷史 開發環境 Macos + Vs code + Chrome 項目的靈感最初來源:由于我是一個宅男在...
閱讀 1944·2021-10-12 10:12
閱讀 3072·2019-08-30 15:44
閱讀 843·2019-08-30 15:43
閱讀 2994·2019-08-30 14:02
閱讀 2076·2019-08-30 12:54
閱讀 3497·2019-08-26 17:05
閱讀 1980·2019-08-26 13:34
閱讀 1051·2019-08-26 11:54
{# {% for comment in question.comments | sort(attribute="create_time",reverse=true) %} #} {% for comment in question.comments %}-
{{ comment.content }}
{{ comment.author.username }}
{{ comment.create_time }}
{% endfor %}