Diango博客--10.交流的橋梁“評論功能”

文章目錄

    • 0.思路引導
    • 1.創建"評論"應用
    • 2.設計"評論"的數據庫模型
    • 3.注冊"評論"模型到 admin
    • 4.設計“評論”表單
    • 5.展示評論表單
    • 6.“評論”視圖函數
    • 7.綁定 URL
    • 8.向讀者發送是否“評論”成功的狀態
    • 9.詳情頁底部顯示“評論”內容

0.思路引導

本文將創建一個新的應用,即在博客詳情頁的底部,增加評論功能。

效果顯示如下所示,具體的操作將從頭到尾進行記錄。

在這里插入圖片描述

1.創建"評論"應用

1)進入到項目根目錄,然后輸入如下命令創建一個新的應用:

pipenv run python manage.py startapp comments

2)在 settings.py 里注冊這個應用,django 才知道這是一個應用
文件位置:blogproject/settings.py

...
INSTALLED_APPS = [...'blog.apps.BlogConfig',  # 注冊 blog 應用'comments.apps.CommentsConfig',  # 注冊 comments 應用
]v
...

3)注意這里注冊的是 CommentsConfig 類,同時進行配置,讓 comment 應用在 django 的 admin 后臺顯示中文名字。

文件位置:comments/app.py

from django.apps import AppConfigclass CommentsConfig(AppConfig):name = 'comments'verbose_name = '評論'

2.設計"評論"的數據庫模型

1)編寫數據庫模型文件
文件位置:comments/models.py


from django.db import models
from django.utils import timezoneclass Comment(models.Model):name = models.CharField('名字', max_length=50)email = models.EmailField('郵箱')url = models.URLField('網址', blank=True)text = models.TextField('內容')created_time = models.DateTimeField('創建時間', default=timezone.now)post = models.ForeignKey('blog.Post', verbose_name='文章', on_delete=models.CASCADE)class Meta:verbose_name = '評論'verbose_name_plural = verbose_namedef __str__(self):return '{}: {}'.format(self.name, self.text[:20])

2)遷移數據庫
在項目根目錄下分別運行下面兩條命令:

pipenv run python manage.py makemigrations
pipenv run python manage.py migrate

3.注冊"評論"模型到 admin

既然已經創建了模型,我們就可以將它注冊到 django admin 后臺,方便管理員用戶對評論進行管理

文件位置:comments/admin.py

from django.contrib import admin
from .models import Commentclass CommentAdmin(admin.ModelAdmin):list_display = ['name', 'email', 'url', 'post', 'created_time']fields = ['name', 'email', 'url', 'text', 'post']admin.site.register(Comment, CommentAdmin)

實際效果展示如下:
在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述

4.設計“評論”表單

思維邏輯:

1)表單是用來收集并向服務器提交用戶輸入的數據的,是用戶在我們博客網站上發表評論的過程。

2)當用戶想要發表評論時,他找到我們給他展示的一個評論表單(在文章詳情頁的底部就有一個評論表單),然后根據表單的要求填寫相應的數據。

3)之后用戶點擊評論按鈕,這些數據就會發送給某個 URL。我們知道每一個 URL 對應著一個 django 的視圖函數,于是 django 調用這個視圖函數,我們在視圖函數中,對用戶通過表單提交上來的數據進行處理,比如驗證數據的合法性并且保存數據到數據庫中,那么用戶的評論就被 django 處理了。

4)如果通過表單提交的數據存在錯誤,那么我們把錯誤信息返回給用戶,并在前端重新渲染表單,要求用戶根據錯誤信息修正表單中不符合格式的數據,再重新提交。

文件位置:comments/forms.py

from django import forms
from .models import Commentclass CommentForm(forms.ModelForm):class Meta:model = Commentfields = ['name', 'email', 'url', 'text']

要使用 django 的表單功能,我們首先導入 forms 模塊。django 的表單類必須繼承自 forms.Form 類或者 forms.ModelForm 類。

如果表單對應有一個數據庫模型(例如這里的評論表單對應著評論模型),那么使用 ModelForm 類會簡單很多,這是 django 為我們提供的方便。

之后我們在表單的內部類 Meta 里指定一些和表單相關的東西。model = Comment 表明這個表單對應的數據庫模型是 Comment 類。fields = [‘name’, ‘email’, ‘url’, ‘text’] 指定了表單需要顯示的字段,這里我們指定了 name、email、url、text 需要顯示。
在這里插入圖片描述

5.展示評論表單

表單類已經定義完畢,現在的任務是在文章的詳情頁下方將這個表單展現給用戶,用戶可以通過這個表單填寫評論數據,從而發表評論。

那么怎么展現一個表單呢?django 會根據表單類的定義自動生成表單的 HTML 代碼,我們要做的就是實例化這個表單類,然后將表單的實例傳給模板,讓 django 的模板引擎來渲染這個表單。那怎么將表單類的實例傳給模板呢?

1)因為表單出現在文章詳情頁,一種想法是修改文章詳情頁 detail 視圖函數,在這個視圖中實例化一個表單,然后傳遞給模板。然而這樣做的一個缺點就是需要修改 detail 視圖函數的代碼,而且 detail 視圖函數的作用主要就是處理文章詳情;

2)一個視圖函數最好不要讓它做太多雜七雜八的事情。另外一種想法是使用自定義的模板標簽,我們在 頁面側邊欄曾經使用自定義模板標簽,這里我們使用自定義模板標簽的方法,來渲染表單頁面。

在 comments\ 文件夾下新建一個 templatetags 文件夾,然后創建 init.py 文件使其成為一個包,再創建一個 comments_extras.py 文件用于存放模板標簽的代碼。然后我們定義一個 inclusion_tag 類型的模板標簽,用于渲染評論表單。

文件位置:comments\comments_extras.py

from django import template
from ..forms import CommentFormregister = template.Library()@register.inclusion_tag('comments/inclusions/_form.html', takes_context=True)
def show_comment_form(context, post, form=None):if form is None:form = CommentForm()return {'form': form,'post': post,}

從定義可以看到,show_comment_form 模板標簽使用時會接受一個 post(文章 Post 模型的實例)作為參數,同時也可能傳入一個評論表單 CommentForm 的實例 form,如果沒有接受到評論表單參數,模板標簽就會新創建一個 CommentForm 的實例(一個沒有綁定任何數據的空表單)傳給模板,否則就直接將接受到的評論表單實例直接傳給模板,這主要是為了復用已有的評論表單實例。

然后在 templates/comments/inclusions 目錄下(沒有就新建)新建一個 _form.html 模板,寫上代碼:

<form action="{% url 'comments:comment' post.pk %}" method="post" class="comment-form">{% csrf_token %}<div class="row"><div class="col-md-4"><label for="{{ form.name.id_for_label }}">{{ form.name.label }}</label>{{ form.name }}{{ form.name.errors }}</div><div class="col-md-4"><label for="{{ form.email.id_for_label }}">{{ form.email.label }}</label>{{ form.email }}{{ form.email.errors }}</div><div class="col-md-4"><label for="{{ form.url.id_for_label }}">{{ form.url.label }}</label>{{ form.url }}{{ form.url.errors }}</div><div class="col-md-12"><label for="{{ form.text.id_for_label }}">{{ form.text.label }}</label>{{ form.text }}{{ form.text.errors }}<button type="submit" class="comment-btn">發表</button></div></div>    <!-- row -->
</form>

然后我們就可以在 detail.html 中使用這個模板標簽來渲染表單了,注意在使用前記得先 {% load comments_extras %} 這個模塊。而且為了避免可能的報錯,最好重啟一下開發服務器。

{% extends 'base.html' %}
{% load comments_extras %}
...<h3>發表評論</h3>
{% show_comment_form post %}

6.“評論”視圖函數

當用戶提交表單中的數據后,django 需要調用相應的視圖函數來處理這些數據,下面開始寫我們視圖函數處理邏輯:

from blog.models import Post
from django.shortcuts import get_object_or_404, redirect, render
from django.views.decorators.http import require_POSTfrom .forms import CommentForm@require_POST
def comment(request, post_pk):# 先獲取被評論的文章,因為后面需要把評論和被評論的文章關聯起來。# 這里我們使用了 django 提供的一個快捷函數 get_object_or_404,# 這個函數的作用是當獲取的文章(Post)存在時,則獲取;否則返回 404 頁面給用戶。post = get_object_or_404(Post, pk=post_pk)# django 將用戶提交的數據封裝在 request.POST 中,這是一個類字典對象。# 我們利用這些數據構造了 CommentForm 的實例,這樣就生成了一個綁定了用戶提交數據的表單。form = CommentForm(request.POST)# 當調用 form.is_valid() 方法時,django 自動幫我們檢查表單的數據是否符合格式要求。if form.is_valid():# 檢查到數據是合法的,調用表單的 save 方法保存數據到數據庫,# commit=False 的作用是僅僅利用表單的數據生成 Comment 模型類的實例,但還不保存評論數據到數據庫。comment = form.save(commit=False)# 將評論和被評論的文章關聯起來。comment.post = post# 最終將評論數據保存進數據庫,調用模型實例的 save 方法comment.save()# 重定向到 post 的詳情頁,實際上當 redirect 函數接收一個模型的實例時,它會調用這個模型實例的 get_absolute_url 方法,# 然后重定向到 get_absolute_url 方法返回的 URL。return redirect(post)# 檢查到數據不合法,我們渲染一個預覽頁面,用于展示表單的錯誤。# 注意這里被評論的文章 post 也傳給了模板,因為我們需要根據 post 來生成表單的提交地址。context = {'post': post,'form': form,}return render(request, 'comments/preview.html', context=context)

首先視圖函數被 require_POST 裝飾器裝飾,從裝飾器的名字就可以看出,其作用是限制這個視圖只能通過 POST 請求觸發,因為創建評論需要用戶通過表單提交的數據,而提交表單通常都是限定為 POST 請求,這樣更加安全。

另外我們使用了 redirect 快捷函數。這個函數位于 django.shortcuts 模塊中,它的作用是對 HTTP 請求進行重定向(即用戶訪問的是某個 URL,但由于某些原因,服務器會將用戶重定向到另外的 URL)。redirect 既可以接收一個 URL 作為參數,也可以接收一個模型的實例作為參數(例如這里的 post)。

如果接收一個模型的實例,那么這個實例必須實現了 get_absolute_url 方法,這樣 redirect 會根據 get_absolute_url 方法返回的 URL 值進行重定向,如下:
在這里插入圖片描述
與此同時,視圖函數中還對讀者輸入的數據格式進行判斷,如果提交的數據合法,我們就將評論數據保存到數據庫,否則說明用戶提交的表單包含錯誤,我們將渲染一個 preview.html 頁面,來展示表單中的錯誤,以便用戶修改后重新提交。

文件位置:templates/comments/preview.html

{% extends 'base.html' %}
{% load comment_extras %}{% block main %}{% show_comment_form post form %}
{% endblock main %}

這里還是使用 show_comment_form 模板標簽來展示一個表單,然而不同的是,這里我們傳入由視圖函數 comment 傳來的綁定了用戶提交的數據的表單實例 form,而不是渲染一個空表單。

因為視圖函數 comment 中的表單實例是綁定了用戶提交的評論數據,以及對數據進行過合法性校驗的表單,因此當 django 渲染這個表單時,會連帶渲染用戶已經填寫的表單數據以及數據不合法的錯誤提示信息,而不是一個空的表單了。

例如下圖,我們提交的數據中 email 格式不合法,表單校驗了數據格式,然后渲染錯誤提示:

在這里插入圖片描述

7.綁定 URL

在 comment 應用中再建一個 urls.py 文件,寫上 URL 模式:

文件位置: comments/urls.py

from django.urls import pathfrom . import viewsapp_name = 'comments'
urlpatterns = [path('comment/<int:post_pk>', views.comment, name='comment'),
]

然后在項目的 blogproject\ 目錄的 urls.py 里包含 comments\urls.py 這個文件:
文件位置:blogproject/urls.py

from django.contrib import admin
from django.urls import path,includeurlpatterns = [path(r'admin/', admin.site.urls),path(r'', include('blog.urls')),path(r'', include('comments.urls')),
]

8.向讀者發送是否“評論”成功的狀態

第六部分中,測試提交評論功能時,嘗試輸入非法格式的數據,例如將郵箱輸入為 xxx@xxx,那么評論視圖在校驗表單數據合法性時,發現郵箱格式不符,就會渲染 preview 頁面,展示表單中的錯誤,將郵箱修改為正確的格式后,再次點擊發表,頁面就跳轉到了被評論文章的詳情頁,說明視圖正確執行了保存表單數據到數據庫的邏輯。

不過這里有一點不好的地方就是,評論成功后頁面直接跳轉到了被評論文章的詳情頁,沒有任何提示,用戶也不知道評論究竟有沒有真的成功。這里我們使用 django 自帶的 messages 應用來給用戶發送評論成功或者失敗的消息。

django 默認已經為我們做好了 messages 的相關配置,直接用即可。

兩個地方需要發送消息,第一個是當評論成功,即評論數據成功保存到數據庫后,因此在 comment 視圖中加一句。

from django.contrib import messagesif form.is_valid():...# 最終將評論數據保存進數據庫,調用模型實例的 save 方法comment.save()messages.add_message(request, messages.SUCCESS, '評論發表成功!', extra_tags='success')return redirect(post)

這里導入 django 的 messages 模塊,使用 add_message 方法增加了一條消息.

消息的第一個參數是當前請求,因為當前請求攜帶用戶的 cookie,django 默認將詳細存儲在用戶的 cookie 中。

第二個參數是消息級別,評論發表成功的消息設置為 messages.SUCCESS,這是 django 已經默認定義好的一個整數,消息級別也可以自己定義。

緊接著傳入消息的內容,最后 extra_tags 給這條消息打上額外的標簽,標簽值可以在展示消息時使用,比如這里我們會把這個值用在模板中的 HTML 標簽的 class 屬性,增加樣式。

同樣的,如果評論失敗了,也發送一條消息:

# 檢查到數據不合法,我們渲染一個預覽頁面,用于展示表單的錯誤。
# 注意這里被評論的文章 post 也傳給了模板,因為我們需要根據 post 來生成表單的提交地址。
context = {'post': post,'form': form,
}
messages.add_message(request, messages.ERROR, '評論發表失敗!請修改表單中的錯誤后重新提交。', extra_tags='danger')

發送的消息被緩存在 cookie 中,然后我們在模板中獲取顯示即可。顯示消息比較好的地方是在導航條的下面,我們在模板 base.html 的導航條代碼下增加如下代碼:

文件位置:templates/base.html

<header>...
</header>
{% if messages %}{% for message in messages %}<div class="alert alert-{{ message.tags }} alert-dismissible" role="alert"><button type="button" class="close" data-dismiss="alert" aria-label="Close"><spanaria-hidden="true">&times;</span></button>{{ message }}</div>{% endfor %}
{% endif %}

這里 django 會通過全局上下文自動把 messages 變量傳給模板,這個變量里存儲我們發送的消息內容,然后就是循環顯示消息了。這里我們使用了 bootstrap 的一個 alert 組件,為其設置不同的 class 會顯示不同的顏色,所以之前添加消息時傳入的 extra_tags 就派上了用場。比如這里 alert-{{ message.tags }},當傳入的是 success 時,類名就為 alert-success,這時顯示的消息背景顏色就是綠色,傳入的是 dangerous,則顯示的就是紅色。

評論發布成功和失敗的消息效果如下圖:
在這里插入圖片描述

9.詳情頁底部顯示“評論”內容

為了不改動已有的視圖函數的代碼,評論數據我們也使用自定義的模板標簽來實現。

文件位置:comments\comments_extras.py

@register.inclusion_tag('comments/inclusions/_list.html', takes_context=True)
def show_comments(context, post):comment_list = post.comment_set.all().order_by('-created_time')comment_count = comment_list.count()return {'comment_count': comment_count,'comment_list': comment_list,}

文件位置: templates/comments/inclusions/_list.html

<h3>評論列表,共 <span>{{ comment_count }}</span> 條評論</h3>
<ul class="comment-list list-unstyled">{% for comment in comment_list %}<li class="comment-item"><span class="nickname">{{ comment.name }}</span><time class="submit-date" datetime="{{ comment.created_time }}">{{ comment.created_time }}</time><div class="text">{{ comment.text|linebreaks }}</div></li>{% empty %}暫無評論{% endfor %}
</ul>

最后在detail.html 中,將此前占位用的評論模板替換為模板標簽渲染的內容:

<h3>發表評論</h3>
{% show_comment_form post %}
<div class="comment-list-panel">{% show_comments post %}
</div>

訪問文章詳情頁,即可看到已經發表的評論列表。效果展示如下:
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/452483.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/452483.shtml
英文地址,請注明出處:http://en.pswp.cn/news/452483.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python與android交互,Android客戶端與Python服務器端的簡單通信

最近在做一個APP&#xff0c;需要與服務器通信&#xff0c;一點一點的嘗試&#xff0c;記錄一下。本文使用了OkHttp和Flask框架。Android客戶端&#xff1a;實現功能輸入完點擊OK按鈕后會toast成功的信息。Python服務端&#xff1a;各部分代碼如下&#xff1a;activity_main.xm…

結構程序設計

結構程序設計經典定義&#xff1a;如果一個程序的代碼塊僅僅通過順序、選擇和循環這3種基本控制結構進行連接&#xff0c;并且每個代碼塊只有一個入口和一個出口&#xff0c;則稱這個程序是結構化的。 結構程序設計更全面的定義&#xff1a;結構程序設計是盡可能少用GO TO語句…

Sql Server 開窗函數Over()的使用

利用over()&#xff0c;將統計信息計算出來&#xff0c;然后直接篩選結果集1 declare t table(2 ProductID int,3 ProductName varchar(20),4 ProductType varchar(20),5 Price int)6 7 insert t8 select 1,name1,P1,3 union all9 select 2,name2,P1,5 union all 10 select 3,…

云棲科技評論第48期:前沿科技對世界的改造 我們這代人只完成了1%

1、數字經濟版圖呈中美雙分趨勢 日本IT行業為前景擔憂 數字經濟版圖呈中美雙分趨勢 日本IT行業為前景擔憂 【新聞摘要】《日本經濟新聞》日前刊文稱&#xff0c;數字經濟的勢力版圖呈現中國和美國兩強雙分的趨勢明顯&#xff0c;這意味著日本可能不得不使用中美的技術&#xff…

程序員犯的非技術錯誤(Top 5)

對于程序開發者來說&#xff0c;有兩種技術需要我們掌握&#xff0c;一個是技術上的能力&#xff0c;另一個是非技術上的能力。不幸的是&#xff0c;許多程序員過多地關注了技術上的能力&#xff0c;而忽略了非技術上的能力的培養&#xff0c;因此&#xff0c;我們的程序員們經…

CentOS下添加Root權限用戶‘超級用戶’方法(xxx is not in the sudoers file.This incident will be reported.的解決方法)

文章目錄1.添加普通用戶2.添加sudo文件的寫權限3.編輯sudoers文件4.撤銷sudoers文件寫權限1.添加普通用戶 [rootserver ~]# useradd fxd //添加一個名為fxd的用戶 [rootserver ~]# passwd fxd //修改密碼 Changing password for user chenjiafa. New UNIX password: //在這里輸…

android打印intent flag,Android flag詳解

Android flag詳解Android flag詳解一.Flag標志位在閱讀源碼的時候經常發現有一些標志屬性使用一些位操作來判斷是否具有該標志&#xff0c;增加標志或者去除標志。如&#xff1a;二.addFlags (int flags)和setFlags (int flags)區別Public Intent addFlags (int flags)增加額外…

人機界面設計

1.系統響應時間 系統響應時間指從用戶完成某個控制動作(例如&#xff0c;按回車鍵或單擊鼠標)&#xff0c;到軟件給出預期的響應(輸出信息或做動作)之間的這段時間。 系統響應時間有兩個重要屬性&#xff0c;分別是長度和易變性。 1&#xff09;長度&#xff1a;時間過長&#…

GeoHash資料

geohash基本原理 轉載于:https://www.cnblogs.com/hyl8218/p/9111410.html

開啟市場新格局 且看新華三計算與存儲新品發布會

全球領先的新IT解決方案領導者新華三將于8月31日在北京釣魚臺國賓館舉辦“新IT 新動能 新格局 新華三下一代計算與存儲發布會”&#xff0c;重磅發布服務器和存儲的全線新品。 2017年初&#xff0c;新華三集團正式推出了“應用驅動 云領未來”的新IT戰略。在這一戰略指引下&…

Centos7更新 SQLite3至版本3.29.0

文章目錄1.創建 src 目錄并進到這個目錄2.下載 sqlite3 源碼并解壓安裝3.替換系統低版本 sqlite31.創建 src 目錄并進到這個目錄 fxd用戶下&#xff1a; mkdir -p ~/src cd ~/src 2.下載 sqlite3 源碼并解壓安裝 fxd用戶下&#xff1a; wget https://sqlite.org/2019/sqlite…

開發人員必學的5門課程

越來越多的Web開發人員通常都會問一些同樣的問題。比如&#xff1a;哪一種開發語言最重要&#xff1f;初級開發人員的薪金會是多少&#xff1f;公司提供的免費培訓有用嗎&#xff1f;如何評估一個新的項目&#xff1f;盡管這些問題都很重要&#xff0c;但是開發人員往往對其他人…

android 響應類型,android – Retrofit 2 RxJava – Gson – “全局”反序列化,更改響應類型...

正如Than所說,使用攔截器的解決方案并不是那么好.我已經設法用一個Rx變壓器來解決這個問題.我還添加了自定義api異常,當出現問題時我可以拋出它并在onError中輕松處理它.我認為它更強大.響應包裝器&#xff1a;public class ApiResponse {private boolean success;private T da…

龜兔賽跑問題

題目 烏龜與兔子進行賽跑&#xff0c;跑場是一個矩型跑道&#xff0c;跑道邊可以隨地進行休息。烏龜每分鐘可以前進3米&#xff0c;兔子每分鐘前進9米&#xff1b;兔子嫌烏龜跑得慢&#xff0c;覺得肯定能跑贏烏龜&#xff0c;于是&#xff0c;每跑10分鐘回頭看一下烏龜&#x…

過程設計的工具

描述程序處理過程的工具稱為過程設計工具&#xff0c;它可以分為圖形、表格和語言3類。不論是那類工具&#xff0c;對他們的基本要求都是提供對設計 無歧義的描述&#xff0c;也就是應該能夠指明控制流程、處理功能、數據組織以及其他方面的實現細節。從而在編碼階段能夠把對應…

Centos7中安裝python3.7、pip3以及pipenv(親測有效)

文章目錄1.安裝python3.7以及pip32.使用pip3安裝pipenv時pip報錯3.使用pip3安裝pipenv時出現ReadTimeoutError4.查看pipenv版本報錯1.安裝python3.7以及pip3 1)首先來安裝依賴 yum -y install gcc gcc-c yum -y groupinstall “Development tools” yum install openssl-deve…

成功人士都是這樣逼出來的

研究過很多很多成功人士的成才之路&#xff0c;發現這些人和我們普通人其實沒有什么區別&#xff0c;不過&#xff0c;這些人用老祖宗的話說是“天將降大任于斯人也&#xff0c;必將苦其心志&#xff0c;勞其筋骨&#xff0c;餓其體膚&#xff0c;空乏其身&#xff0c;所以動心…

Linux下網卡綁定模式

Linux bonding驅動一共提供了7種模式&#xff0c;它們分別是&#xff1a;balance-rr 、active-backup、balance-xor、broadcast、802.3ad、balance-tlb、balance-alb。 balance-rr or 0&#xff1a;輪詢模式&#xff0c;提供負載平衡和容錯。該模式下兩個網口都工作 active-…

Unity4.6證書激活問題

第一次運行的激活問題安裝好Unity4.6之后首次啟動會自動連網&#xff0c;但是會出現error loading page錯誤&#xff0c;SSL peer certificate or SSH remote key was not OK。如下圖所示&#xff1a; 點OK就退出了。再啟動一遍也是一樣的。 這時可以先暫時斷一下網&#xff0c…

Readhat中掛載yum源

文章目錄1.鏈接物理鏡像2.查看原始掛載目錄3.掛載4.新建iso.repo5.查看掛載目錄1.鏈接物理鏡像 vmware控制臺中&#xff0c;勾選設備狀態成“已連接”&#xff0c;會在桌面生成鏡像圖標。 2.查看原始掛載目錄 輸入以下指令&#xff1a; [rootlocalhost ~]# df -h Filesystem…