自己動(dòng)手寫個(gè)微型 CSDN 吧,還能實(shí)現(xiàn)網(wǎng)頁(yè)版 Blink,No.1

      網(wǎng)友投稿 659 2025-04-04

      自己動(dòng)手寫個(gè)微型 CSDN 吧,還能實(shí)現(xiàn)網(wǎng)頁(yè)版 Blink,No.1

      橡皮擦,一個(gè)逗趣的互聯(lián)網(wǎng)高級(jí)網(wǎng)蟲。新的系列,讓我們一起進(jìn)入 Django 世界。

      十九、微微型 CSDN 項(xiàng)目

      Django 框架的學(xué)習(xí)之旅還在繼續(xù),預(yù)計(jì)再有 10 篇以上才可以封筆,果然框架系列專欄是最難寫的。

      接下來(lái)的幾篇博客將基于 Django 框架完成一個(gè)微型的 CSDN 博客項(xiàng)目,要實(shí)現(xiàn)的核心功能是發(fā)布博客以及發(fā)布 Blink,還會(huì)實(shí)現(xiàn)博客中的評(píng)論與友情鏈接功能。

      該項(xiàng)目特別適合作為大學(xué)期末項(xiàng)目,如果你看到了本項(xiàng)目,要好好把本項(xiàng)目制作過(guò)程學(xué)習(xí)完畢,對(duì)你非常有幫助。

      簡(jiǎn)單拆解該項(xiàng)目模塊:

      用戶模塊;

      文章與分類模塊;

      Blink 模塊;

      菜單模塊;

      友情鏈接模塊;

      評(píng)論模塊。

      19.1 補(bǔ)充知識(shí)之 Django 后臺(tái)模型方法篇

      在上一篇博客中介紹了 Django 的后臺(tái)模型屬性,本篇博客涉及的項(xiàng)目開(kāi)始前,需要先把后臺(tái)模型方法補(bǔ)充完整。

      19.1.1 save_model 方法

      重寫該方法得到的結(jié)果就是保存數(shù)據(jù)時(shí),可以在數(shù)據(jù)入庫(kù)前進(jìn)行細(xì)節(jié)處理。

      方法原型如下:

      def save_model(self, request, obj, form, change): """ Given a model instance save it to the database. """ obj.save()

      其中 request 是 HttpRequest 實(shí)例,obj 是模型實(shí)例,form 表單傳遞進(jìn)來(lái)的實(shí)例,change 是布爾值,用來(lái)標(biāo)記是新增數(shù)據(jù)還是更新數(shù)據(jù)。

      def save_model(self, request, obj, form, change): print(form) obj.name = "xxx" super().save_model(request, obj, form, change)

      上述代碼不管前臺(tái)傳遞過(guò)來(lái)的是何值,最終 name 字段得到都是 xxx,同時(shí)輸出 form 得到如下內(nèi)容:

      可以看到這里是填寫的表單內(nèi)容與 HTML 標(biāo)簽。

      19.1.2 delete_model 方法

      重寫該方法可以在進(jìn)行刪除操作的時(shí)候,處理一些細(xì)節(jié)。

      方法原型如下:

      def delete_model(self, request, obj): """ Given a model instance delete it from the database. """ obj.delete()

      該方法的調(diào)用依舊采用 super().delete_model() 。

      19.1.3 其余簡(jiǎn)單方法

      get_readonly_fields 方法

      返回一組只讀字段。

      get_autocomplete_fields

      返回一組自動(dòng)完成字段,與 autocomplete_fields 使用方法一致。

      get_prepopulated_fields

      返回一組自動(dòng)填充字段。

      get_list_display

      返回表格字段,與 list_display 一致。

      get_list_display_links

      返回一組超鏈接顯示的字段。

      get_fields

      返回一組字段,與 fields 一致。

      其余更多方法不再進(jìn)行羅列說(shuō)明,除了官方手冊(cè)可以進(jìn)行學(xué)習(xí)以外,還可以打開(kāi) Django 文件夾下 admin 目錄中的 options.py 文件,里面有這些方法的原型。

      純粹學(xué)習(xí) API 是沒(méi)有辦法掌握 Django 中所有內(nèi)容的的,還是要把他們應(yīng)用到項(xiàng)目中。

      19.2 微型 CSDN 初始化

      準(zhǔn)備工作與復(fù)習(xí)工作完成之后,就可以對(duì)微型 CSDN 項(xiàng)目進(jìn)行初始化操作了,創(chuàng)建項(xiàng)目,創(chuàng)建 APP。

      django-admin startproject my_csdn cd my_csdn python manage.py startapp csdn

      接下來(lái)在 csdn 文件夾中創(chuàng)建一個(gè) templates 目錄文件,然后在該目錄中再嵌套一個(gè) csdn 目錄。

      按照常見(jiàn)項(xiàng)目結(jié)構(gòu),在創(chuàng)建一個(gè)前端文件夾和一個(gè)后端文件夾,分別是 frontend 和 backend。

      相同目錄再創(chuàng)建一個(gè) common.html 文件,該文件用于存放前后端通用的頁(yè)面代碼。

      最終得到的目錄結(jié)構(gòu)如下:

      在 common.html 中輸入如下代碼,重點(diǎn)關(guān)注 block 部分。

      {% load static %} {% block title %}{% endblock%}

      666精品国产精品亚洲 | 亚洲 无码 在线 专区| 国产成人精品日本亚洲专一区| 亚洲高清资源在线观看| 久久久久亚洲精品无码蜜桃| 亚洲欧洲免费视频| 久久99亚洲网美利坚合众国| 久久久久久亚洲精品成人| 亚洲欧洲日韩不卡| 337p日本欧洲亚洲大胆艺术| 亚洲高清中文字幕综合网| 亚洲成人免费网站| 中文字幕在线观看亚洲视频| 亚洲精品国产国语| 亚洲Av永久无码精品一区二区| 亚洲av日韩综合一区久热| 国产精品亚洲av色欲三区| www亚洲精品少妇裸乳一区二区 | 亚洲精品成人图区| 国产色在线|亚洲| 亚洲国产精品无码第一区二区三区| 亚洲国产成人久久精品软件| 国产亚洲综合一区二区三区| 亚洲日本中文字幕天堂网| 亚洲啪啪AV无码片| 日韩精品一区二区亚洲AV观看| 亚洲精品午夜久久久伊人| 最新国产精品亚洲| 成a人片亚洲日本久久| 久久精品国产亚洲精品| 久久久亚洲精品视频| 亚洲成a人片77777群色| 亚洲色在线无码国产精品不卡| 久久亚洲精品无码gv| 亚洲色一色噜一噜噜噜| 亚洲va中文字幕无码久久| 亚洲视频在线观看地址| 亚洲一本到无码av中文字幕| 无码欧精品亚洲日韩一区夜夜嗨 | 亚洲色中文字幕无码AV| 亚洲最大福利视频网站|