亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

14.問題詳情頁面以及添加評(píng)論

or0fun / 3196人閱讀

摘要:現(xiàn)在在首頁我們已經(jīng)可以看到展示的問題了,我們再設(shè)計(jì)一個(gè)問題的詳情頁,通過點(diǎn)擊問題的標(biāo)題進(jìn)去,可以給問題添加評(píng)論或者回答。

現(xiàn)在在首頁我們已經(jīng)可以看到展示的問題了,我們再設(shè)計(jì)一個(gè)問題的詳情頁,通過點(diǎn)擊問題的標(biāo)題進(jìn)去,可以給問題添加評(píng)論或者回答。


問題的詳情頁都使用一個(gè)名為"details.html"的模板,其網(wǎng)址我們設(shè)計(jì)成"/details//"的形式,這時(shí)候我們可以用到一開始提到過的url傳參,編寫對應(yīng)的視圖函數(shù)如下:

@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的參數(shù)question_id傳遞給函數(shù),函數(shù)用question_id返回一個(gè)question模型的對象,并將其傳遞給模板,在模板中處理quesiton對象,包括解析其title/content/author以及對應(yīng)的comments(在模型部分我們已經(jīng)建立了QuestionsComments的關(guān)系和引用)。為首頁問題的title添加鏈接:

{{ question.title }}

details.html核心代碼(其余部分繼承base.html)如下:

{% block body_part %}
    

{{ question.title }}

作者:{{ question.author.username }} 時(shí)間:{{ question.create_time }}


{{ question.content }}


    {# {% 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 %}
{% endblock %}

此時(shí)還沒有添加評(píng)論功能,我手動(dòng)往數(shù)據(jù)庫寫了一條評(píng)論,來查看html的效果,如下:

我們再添加評(píng)論(或者說回答)的功能,其實(shí)就是加個(gè)POST表單,和注冊的邏輯是一樣的,為html增加下面的代碼,放在問題和評(píng)論之間:

評(píng)論({{ question.comments | length }}):

這里用了一個(gè)length過濾器來獲取comments的數(shù)量。修改detail視圖函數(shù),為其增加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"))

這部分與前面的文章中發(fā)布問答的視圖函數(shù)也是很像的,無需重復(fù)講解,經(jīng)測試發(fā)布評(píng)論功能以及可以使用了。
最后美化界面如下:


補(bǔ)充:
由于在前文中我們的Comments模型通過以下代碼和Users/Questions都建立了關(guān)系:

author = db.relationship("Users", backref=db.backref("comments"))
question = db.relationship("Questions", backref=db.backref("comments", order_by=create_time.desc()))

我們在新增comment的時(shí)候,這條代碼:

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()

雖然看上去長了,但可能更容易看出模型之間的關(guān)系了,anyway,兩種方式都是OK的。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/41284.html

相關(guān)文章

  • Django 博客開發(fā)教程 12 - 評(píng)論

    摘要:創(chuàng)建了數(shù)據(jù)庫模型就要遷移數(shù)據(jù)庫,遷移數(shù)據(jù)庫的命令也在前面講過。如果表單對應(yīng)有一個(gè)數(shù)據(jù)庫模型例如這里的評(píng)論表單對應(yīng)著評(píng)論模型,那么使用類會(huì)簡單很多,這是為我們提供的方便。表明這個(gè)表單對應(yīng)的數(shù)據(jù)庫模型是類。 創(chuàng)建評(píng)論應(yīng)用 相對來說,評(píng)論其實(shí)是另外一個(gè)比較獨(dú)立的功能。Django 提倡,如果功能相對比較獨(dú)立的話,最好是創(chuàng)建一個(gè)應(yīng)用,把相應(yīng)的功能代碼寫到這個(gè)應(yīng)用里。我們的第一個(gè)應(yīng)用叫 blog...

    wangbinke 評(píng)論0 收藏0
  • Django搭建個(gè)人博客:錨點(diǎn)定位

    摘要:在父頁面中文章詳情模板添加需要執(zhí)行錨點(diǎn)拼接的函數(shù)新增函數(shù),處理二級(jí)回復(fù)去除尾部符號(hào)刷新并定位到錨點(diǎn)函數(shù)中運(yùn)用了的三元運(yùn)算符,翻譯成人話就是如果成立則返回,如果不成立就返回。 老讀者注意:上一章消息通知有個(gè)bug,即發(fā)給管理員的notify必須移動(dòng)到new_comment.save()的后面,否則會(huì)導(dǎo)致action_object存儲(chǔ)為NULL,并且導(dǎo)致本章的html拼接錨點(diǎn)失效。原文已...

    xi4oh4o 評(píng)論0 收藏0
  • Django搭建個(gè)人博客:使用django-ckeditor富文本編輯器

    摘要:后面兩個(gè)編輯器自帶,不用單獨(dú)下載,添上就可以了添加相關(guān)插件這樣就完成了代碼高亮效果不錯(cuò)在前臺(tái)使用為了讓用戶在前臺(tái)也能使用富文本編輯器,還得對代碼稍加改動(dòng)。對于有些不喜歡的人來說,甚至可以連博文都使用提供的富文本編輯器。 前面我們已經(jīng)實(shí)現(xiàn)了用Markdown語法寫文章了。但是文章的評(píng)論用Markdown就不太合適了,你不能強(qiáng)求用戶也花時(shí)間去熟悉語法啊。另外評(píng)論中通常還有表情、帶顏色的字體...

    beanlam 評(píng)論0 收藏0
  • 基于vue2 + muse-ui構(gòu)建的移動(dòng)端、PC端輕社區(qū)項(xiàng)目 F-Rent 友租

    摘要:如果有什么可以幫到你的無論是不是此項(xiàng)目中的問題都可以在提出我會(huì)盡我所能幫你解決歡迎大佬們提出好的問題和點(diǎn)子,我會(huì)第一時(shí)間去修正。 前言 本項(xiàng)目(友租)是基于Vue2、Vuex、Muse-UI、es6、webpack構(gòu)建的一個(gè)移動(dòng)端、PC端輕社區(qū)項(xiàng)目 項(xiàng)目地址GitHub 項(xiàng)目更新歷史 開發(fā)環(huán)境 Macos + Vs code + Chrome 項(xiàng)目的靈感最初來源:由于我是一個(gè)宅男在...

    linkFly 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

or0fun

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<