Django創建網站的地基

相關文檔
1、為新網站創建一個文件夾(這里是:locallibrary)

D:\django>mkdir locallibraryD:\django>cd locallibraryD:\django\locallibrary>dirVolume in drive D is 新加卷Volume Serial Number is B68C-03F7Directory of D:\django\locallibrary2024/05/14  22:51    <DIR>          .
2024/05/14  22:51    <DIR>          ..0 File(s)              0 bytes2 Dir(s)  240,186,916,864 bytes free

2、使用 django-admin 工具創建工程的文件夾

基本的文件模板和工程管理腳本(manage.py)
用manage.py 創建一個或多個應用
在工程里注冊新的應用。
為每個應用分配 url

  • 備注: 一個網站可能由多個部分組成,比如,主要頁面,博客,wiki,下載區域等。Django 鼓勵將這些部分作為分開的應用開發。如果這樣的話,在需要可以在不同的工程中復用這些應用。

為 locallibrary 這個項目創建的網站文件夾和它的工程文件夾都命名為locallibrary,我們只創建一個名為catalog的應用
用django-admin startproject命令創建新項目,并進入該文件夾

D:\django>cd locallibraryD:\django\locallibrary>django-admin startproject locallibraryD:\django\locallibrary>cd locallibrary

django-admin工具創建如下所示文件夾結構

D:\django\locallibrary\locallibrary>dirVolume in drive D is 新加卷Volume Serial Number is B68C-03F7Directory of D:\django\locallibrary\locallibrary2024/05/14  22:52    <DIR>          .
2024/05/14  22:52    <DIR>          ..
2024/05/14  22:52    <DIR>          locallibrary
2024/05/14  22:52               690 manage.py1 File(s)            690 bytes3 Dir(s)  240,186,908,672 bytes freeD:\django\locallibrary\locallibrary>dir locallibraryVolume in drive D is 新加卷Volume Serial Number is B68C-03F7Directory of D:\django\locallibrary\locallibrary\locallibrary2024/05/14  22:52    <DIR>          .
2024/05/14  22:52    <DIR>          ..
2024/05/14  22:52               417 asgi.py
2024/05/14  22:52             3,362 settings.py
2024/05/14  22:52               790 urls.py
2024/05/14  22:52               417 wsgi.py
2024/05/14  22:52                 0 __init__.py5 File(s)          4,986 bytes2 Dir(s)  240,186,908,672 bytes free
locallibrary 項目的子文件夾是整個網站的進入點:

settings.py:包含所有的網站設置。這是可以注冊所有創建的應用的地方,也是靜態文件,數據庫配置的地方,等等。
urls.py:定義了網站 url 到 view 的映射。雖然這里可以包含所有的 url,但是更常見的做法是把應用相關的 url 包含在相關應用中,你可以在接下來的教程里看到。
wsgi.py:幫助 Django 應用和網絡服務器間的通訊。你可以把這個當作模板。
manage.py:腳本可以創建應用,和數據庫通訊,啟動開發用網絡服務器。

3、在 locallibrary 項目里,使用下面的命令創建 catalog 應用(和你項目的manage.py在同一個文件夾下)

D:\django\locallibrary\locallibrary>python manage.py startapp catalogD:\django\locallibrary\locallibrary>dirVolume in drive D is 新加卷Volume Serial Number is B68C-03F7Directory of D:\django\locallibrary\locallibrary2024/05/14  22:54    <DIR>          .
2024/05/14  22:52    <DIR>          ..
2024/05/14  22:54    <DIR>          catalog
2024/05/14  22:54    <DIR>          locallibrary
2024/05/14  22:52               690 manage.py1 File(s)            690 bytes4 Dir(s)  240,186,900,480 bytes free

這個工具創建了一個新的文件夾,并為該應用創建了不同的文件。絕大多數文件的命令和它們的目的有關(比如視圖函數就是views.py,模型就是models.py,測試是tests.py,網站管理設置是admin.py,注冊應用是apps.py),并且還包含了為項目所用的最小模板。

執行命令后的文件夾結構如下所示

D:\django\locallibrary\locallibrary>dir catalogVolume in drive D is 新加卷Volume Serial Number is B68C-03F7Directory of D:\django\locallibrary\locallibrary\catalog2024/05/14  22:54    <DIR>          .
2024/05/14  22:54    <DIR>          ..
2024/05/14  22:54                66 admin.py
2024/05/14  22:54               152 apps.py
2024/05/14  22:54    <DIR>          migrations
2024/05/14  22:54                60 models.py
2024/05/14  22:54                63 tests.py
2024/05/14  22:54                66 views.py
2024/05/14  22:54                 0 __init__.py6 File(s)            407 bytes3 Dir(s)  240,186,900,480 bytes free

除上面所說的文件外,我們還有:

migration文件夾:用來存儲“migrations”——當你修改你的數據模型時,這個文件會自動升級你的數據庫。
init.py :一個空文件,Django/Python 會將這個文件作為Python 包并允許你在項目的其他部分使用它。

4、注冊 catalog 應用

  • 在項目的 settings 里,把應用添加進INSTALLED_APPS ,就完成了注冊
  • 打開項目設置文件 locallibrary/locallibrary/settings.py 找到 INSTALLED_APPS 列表里的定義。如下所示,在列表的最后添加新的一行。
INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','catalog.apps.CatalogConfig',
]

新的這行詳細說明了應用配置文件在 (CatalogConfig) /locallibrary/catalog/apps.py 里,當你創建應用時就完成了這個過程。

  • 備注: 注意到 INSTALLED_APPS 已經有許多其他的應用了(還有 MIDDLEWARE,在 settings 的下面)。這些應用為 Django administration site 提供了支持和許多功能(包括會話,認證系統等)。

5、配置數據庫
SQLite配置如下

  • 在settings.py里看到這個數據庫怎樣配置的
DATABASES = {'default': {'ENGINE': 'django.db.backends.sqlite3','NAME': os.path.join(BASE_DIR, 'db.sqlite3'),}
}

更多其他數據庫詳情Diango各個數據庫配置

6、其他項目設置
settings.py 里還包括其他的一些設置,時區更改

TIME_ZONE = 'Asia/Shanghai'
  • 有兩個設置你現在不會用到,不過你應該留意:

SECRET_KEY:這個密匙值是 Django 網站安全策略的一部分。如果在開發環境中沒有包好這個密匙,把代碼投入生產環境時最好用不同的密匙代替。(可能從環境變量或文件中讀取)。
DEBUG:這個會在 debug 日志里輸出錯誤信息,而不是輸入 HTTP 的返回碼。在生產環境中,它應設置為 false,因為輸出的錯誤信息會幫助想要攻擊網站的人。

7、鏈接 URL 映射器

  • 在項目文件夾里,創建網站時同時生成了 URL 映射器(urls.py)。盡管你可以用它來管理所有的 URL 映射,但是更常用的做法是把 URL 映射留到它們相關的應用中

1)打開locallibrary/locallibrary/urls.py 并注意指導文字解釋了一些使用 URL 映射器的方法

"""locallibrary URL ConfigurationThe `urlpatterns` list routes URLs to views. For more information please see:https://docs.djangoproject.com/en/2.0/topics/http/urls/
Examples:
Function views1. Add an import:  from my_app import views2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views1. Add an import:  from other_app.views import Home2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf1. Import the include() function: from django.urls import include, path2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import pathurlpatterns = [path('admin/', admin.site.urls),
]

URL 映射通過urlpatterns 變量管理,它是path() 函數的一個 Python 列表結構。每個path()函數要么將 URL 式樣 (URL pattern) 關聯到特定視圖 (specific view),將在模式匹配時顯示;要么關聯到某個 URL 式樣列表的測試代碼。 (第二種情況下,URL 式樣是目標模型里的“base URL”). urlpatterns 列表最開始定義了一個函數,這個函數將所有帶有模型 admin/ 的 URL 映射到模塊admin.site.urls。這個函數包含了 Administration 應用自己的 URL 映射定義。

  • 備注: path() 中的路由是一個字符串,用于定義要匹配的 URL 模式。該字符串可能包括一個命名變量(尖括號中)
  • 例:‘catalog//’。此模式將匹配如 /catalog/any_chars/ 的 URL,并將 any_chars 作為具有參數名稱 id 的字符串傳遞給視圖。我們將在后面的主題中進一步討論路徑方法和路由模式

2)將下面的行添加到文件的底部,以便將新的項添加到 urlpatterns 列表中。這個新項目包括一個 path() ,它將帶有 catalog/ 的請求轉發到模塊 catalog.urls (使用相對路徑 URL /catalog/urls.py)

# Use include() to add paths from the catalog application
from django.conf.urls import include
from django.urls import pathurlpatterns += [path('catalog/', include('catalog.urls')),
]

3)

現在讓我們把網站的根 URL(例:127.0.0.1:8000) 重定向到該 URL:127.0.0.1:8000/catalog/; 這是我們將在這個項目中使用的唯一應用程序,所以我們最好這樣做。為了完成這個目標,我們將使用一個特殊的視圖函數 (RedirectView), 當在 path() 函數中指定的 URL 模式匹配時(在這個例子中是根 URL),它將新的相對 URL 作為其第一個參數重定向到(/catalog/)

將以下行再次添加到文件的底部

#Add URL maps to redirect the base URL to our application
from django.views.generic import RedirectView
urlpatterns += [path('', RedirectView.as_view(url='/catalog/')),
]
  • 將路徑函數的第一個參數留空以表示’/‘。如果你將第一個參數寫為’/',Django 會在你啟動服務器時給出以下警告:

System check identified some issues:
WARNINGS:
?: (urls.W002) Your URL pattern ‘/’ has a route beginning with a ‘/’.
Remove this slash as it is unnecessary.
If this pattern is targeted in an include(), ensure the include() pattern has a trailing ‘/’.

4)

  • Django 默認不提供 CSS, JavaScript, 和圖片等靜態文件。但是當你在開發環境中開發時,這些靜態文件也很有用。作為對這個 URL 映射器的最后一項添加,你可以通過添加以下行在開發期間啟用靜態文件的服務。

把下面的代碼加到文件最后

# Use static() to add url mapping to serve static files during development (only)
from django.conf import settings
from django.conf.urls.static import staticurlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
  • 備注: 有很多方法擴展urlpatterns 列表 (在上面的代碼里我們通過 += 運算符來區分新舊代碼)。我們同樣可以用原先列表的定義:
urlpatterns = [path('admin/', admin.site.urls),path('catalog/', include('catalog.urls')),path('', RedirectView.as_view(url='/catalog/', permanent=True)),
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

5)

  • 除此以外,我們也可以包含 import 代碼行 (from django.conf.urls import include) ,這樣更容易看出我們添加的代碼,通常我們把 import 代碼行放在 Python 文件的開頭。

最后,在 catalog 文件夾下創建一個名為 urls.py 的文件,并添加以下文本以定義導入(空)的 urlpatterns。這是我們在編寫應用時添加式樣的地方。

from django.urls import path
from catalog import viewsurlpatterns = []

8、測試網站框架
1)運行數據庫遷移

Django 使用對象關系映射器(ORM)將 Django 代碼中的模型定義映射到底層數據庫使用的數據結構。當我們更改模型定義時,Django 會跟蹤更改并創建數據庫遷移腳本 (in /locallibrary/catalog/migrations/) 來自動遷移數據庫中的底層數據結構來

運行以下命令來定義數據庫中這些模型的表(確保你位于包含 manage.py 的目錄中)

D:\django\locallibrary\locallibrary>python  manage.py makemigrations
No changes detectedD:\django\locallibrary\locallibrary>python manage.py migrate
Operations to perform:Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:Applying contenttypes.0001_initial... OKApplying auth.0001_initial... OKApplying admin.0001_initial... OKApplying admin.0002_logentry_remove_auto_add... OKApplying admin.0003_logentry_add_action_flag_choices... OKApplying contenttypes.0002_remove_content_type_name... OKApplying auth.0002_alter_permission_name_max_length... OKApplying auth.0003_alter_user_email_max_length... OKApplying auth.0004_alter_user_username_opts... OKApplying auth.0005_alter_user_last_login_null... OKApplying auth.0006_require_contenttypes_0002... OKApplying auth.0007_alter_validators_add_error_messages... OKApplying auth.0008_alter_user_username_max_length... OKApplying auth.0009_alter_user_last_name_max_length... OKApplying auth.0010_alter_group_name_max_length... OKApplying auth.0011_update_proxy_permissions... OKApplying auth.0012_alter_user_first_name_max_length... OKApplying sessions.0001_initial... OK

該 makemigrations 命令創建(但不適用)項目中安裝的所有應用程序的遷移(你可以指定應用程序名稱,也可以為單個項目運行遷移)。這讓你有機會在應用這些遷移之前檢查這些遷移代碼—當你是 Django 專家時,你可以選擇稍微調整它們。
這 migrate 命令 明確應用遷移你的數據庫(Django 跟蹤哪些已添加到當前數據庫)

9、運行網站

  • 備注: 這個開發網絡服務器并不夠強大以及不足以用于生產使用,但是它能非常容易得使你在開發期間,獲得你的 Django 網站和運行它,以此來進行快速測試。 默認情況下,服務器會開通(http://127.0.0.1:8000/),但你也可以選擇其他端口。有關更多信息,查閱(django-admin and manage.py: runserver)(Django docs).

通過調用 runserver 命令運行 Web 服務器(與manage.py位于同一目錄下)我指定了端口

D:\django\locallibrary\locallibrary>python3 manage.py runserver 80
The system cannot execute the specified program.D:\django\locallibrary\locallibrary>python manage.py runserver 80
Watching for file changes with StatReloader
Performing system checks...System check identified no issues (0 silenced).
May 14, 2024 - 23:24:27
Django version 5.0.6, using settings 'locallibrary.settings'
Starting development server at http://127.0.0.1:80/
Quit the server with CTRL-BREAK.[14/May/2024 23:24:40] "GET / HTTP/1.1" 302 0
Not Found: /catalog/
[14/May/2024 23:24:40] "GET /catalog/ HTTP/1.1" 404 2329
Not Found: /favicon.ico
[14/May/2024 23:24:41] "GET /favicon.ico HTTP/1.1" 404 2446

瀏覽器訪問如下
在這里插入圖片描述
這個錯誤頁面是預期結果。因為我們沒有在 catalogs.urls 模塊中定義任何頁面/網址。(留意:當我們導航網站根目錄 URL 時,我們被重定向到了**/catalog 。)**

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

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

相關文章

【Uniapp】簡易封裝提示框showToast/showModal

組件 // 封裝提示框 export const showModal (content, showCancel false, title "提示") > {return new Promise((resolve, reject) > {uni.showModal({title: title,content: content,showCancel: showCancel,success: (res) > {resolve(res);},fail:…

Linux計劃任務功能介紹

一次性計劃任務(不能跨越0點) at 16:20 at> echo hello | wall at> at 1621 at> mkdir /tmp/date %F at> at 16:2212022015 at> rm -fr /tmp/* at> job 33 at 2015-12-02 16:22 atq 查詢計劃任務 atrm 刪除計劃任務 atrm 33 /etc/at.deny 拒絕使用at …

結合多模態 AI 谷歌展示 AR 眼鏡原型機;Meta 被曝開發帶攝像頭的 AI 耳機丨 RTE 開發者日報 Vol.204

開發者朋友們大家好&#xff1a; 這里是 「RTE 開發者日報」&#xff0c;每天和大家一起看新聞、聊八卦。我們的社區編輯團隊會整理分享 RTE&#xff08;Real Time Engagement&#xff09; 領域內「有話題的新聞」、「有態度的觀點」、「有意思的數據」、「有思考的文章」、「…

如何修改android 項目顯示的app名

修改vlaues下的string.xml文件 修改這個標簽中的內容就行

國產銀河麒麟V10SP1系統安裝Qt和MySql步驟

安裝軟件&#xff1a;準備好Kylin-Desktop-V10-SP1-Release-hwe-2107-x86_64.iso和qt-opensource-linux-x64-5.14.2.run 安裝步驟&#xff1a; 1、VMWare軟件中新建一個虛擬機并安裝Kylin-Desktop-V10-SP1-Release操作系統&#xff0c;安裝時候輸入密碼的地方記得要用英文&am…

“網絡安全新紀元:等保2.0的詳細解讀與實踐”

網絡安全等級保護基本要求》&#xff08;等保2.0&#xff09;于2019年6月發布&#xff0c;是我國網絡安全等級保護制度的一項重要標準。等保2.0主要針對關鍵信息基礎設施的網絡安全保護&#xff0c;對數據安全和個人信息保護提出了更高的要求。本文將對等保2.0進行詳細解讀&…

3.深度學習課程--技術棧

上一節我們概覽了深度學習的主要內容及其應用領域&#xff0c;解決了學習的初衷和用途問題。在深入算法和模型之前&#xff0c;本小節將介紹課程所需的技術棧和準備事項。雖然這些準備看似簡單&#xff0c;但它們對于后續學習至關重要。 首先&#xff0c;我們將使用Python作為…

動態路由實驗新手入門:快速掌握核心知識點

大家好&#xff0c;這里是G-LAB IT實驗室。今天帶大家學習一下華為動態路由實驗配置&#xff0c;新手入門&#xff0c;快速掌握核心知識點&#xff01; 01、實驗拓撲 02、實驗需求 1.根據拓撲運行對應的路由協議 2.每個路由器都有自己的環回口&#xff0c;宣告的區域不限制 …

Java各大GPS坐標系互轉算法(保證好用)

不好用來捶我&#xff0c;好用的話點個贊鼓勵一下~ /*** 坐標轉換器*/ public class CoordinateConverter {private static final double x_PI 3.14159265358979324 * 3000.0 / 180.0;private static final double PI 3.1415926535897932384626;private static final double…

IDEA不能創建新項目和新模塊

問題&#xff1a; IDEA不管是創建新項目還是新模塊都創建不成功&#xff0c;會報如下圖錯誤 解決方案&#xff1a; 在電腦設置里搜索 “防火墻和網絡保護” &#xff0c;打開如下圖所示 找到你所安裝的IDEA&#xff0c;更改設置&#xff0c;選中IDEA 最后&#xff0c;確定&am…

香港優才計劃避坑指南及過來人建議,這6種行為會毀了你的香港身份!

香港優才計劃是一項香港人才引進政策&#xff0c;如果你想真正落戶香港&#xff0c;那么就需要了解清楚香港優才從申請到永居的整個流程&#xff0c;并且要注意維護好香港身份。 如果操作不當&#xff0c;可能會中斷你來之不易的香港身份。 本文總結了香港優才整個流程中&…

nmap端口掃描工具——Win10

Nmap安裝流程&#xff1a; Nmap官網鏈接&#xff1a;Download the Free Nmap Security Scanner for Linux/Mac/Windows Nmap參考文檔鏈接&#xff1a;https://nmap.org/book/toc.html Nmap使用流程&#xff1a; Nmap軟件主頁面&#xff1a; 中文版&#xff1a; nmap -T4 -…

脈沖神經網絡(Spiking Neural Networks,SNNs)介紹

脈沖神經網絡&#xff08;Spiking Neural Networks&#xff0c;SNNs&#xff09;是仿生神經網絡的一種類型&#xff0c;它們模仿了生物神經元在大腦中傳遞信息的方式。與傳統的人工神經網絡&#xff08;Artificial Neural Networks&#xff0c;ANNs&#xff09;不同&#xff0c…

Prosys OPC UA Simulation Server工程文件備份方法

Prosys OPC UA Simulation Server是一款免費的OPC UA服務器仿真軟件&#xff0c;具體的使用和下載參考官網&#xff1a; Prosys OPC - OPC UA Simulation Server Downloads 他的免費版本不提供工程文件的備份、導入導出功能&#xff0c;每次退出時保存。如果需要工程備份&a…

IPsec VPN簡介

什么是IPsec&#xff1f; IPsec&#xff08;Internet Protocol Security&#xff09;是為IP網絡提供安全性的協議和服務的集合&#xff0c;它是VPN&#xff08;Virtual Private Network&#xff0c;虛擬專用網&#xff09;中常用的一種技術。其實就是一種協議簇&#xff08;類…

揭秘SmartEDA魅力:為何眾多學校青睞這款電路仿真軟件?

在當今數字化、信息化的教育時代&#xff0c;電子電路仿真軟件已成為電子學教學不可或缺的重要工具。其中&#xff0c;SmartEDA電路仿真軟件以其強大的功能、用戶友好的界面以及豐富的教育資源&#xff0c;贏得了眾多學校的青睞。那么&#xff0c;究竟是什么原因讓SmartEDA成為…

如何在阿里云申請免費SSL證書(三個月有效)

SSL證書主要用于建立Web服務器和客戶端間可信的HTTPS協議加密鏈接&#xff0c;以防止數據在傳輸過程中被篡改&#xff0c;避免信息泄露。阿里云提供了多種品牌和類型的SSL證書&#xff0c;以滿足不同用戶的需求。您可以根據自己的預算、域名類型以及網站類型&#xff0c;選擇購…

軟件工程期末復習(7)需求過程

需求分析 需求過程 什么是需求過程&#xff1f; 需求過程是用來導出、確認和維護系統需求文檔的一組結構化活動。通常&#xff0c;一個良好的需求過程應包括下列活動&#xff1a; 需求提取需求分析和協商需求確認 需求提取 需求提取是通過與客戶、系統用戶和其他與系統開發相…

Cannot read properties of undefined (reading ‘init‘)報錯

出現這個報錯是印象項目沒有引echarts包 npm i echarts 下包 然后在main.js中引入 import echarts from echarts Vue.prototype.$echarts echarts 如果還不行 import * as echarts from echarts; 更改一下引入方式 ok了

vue3 + ts中,element-plus組件通過ref引用組件內方法,顯示提示

在vue3 ts 項目中&#xff0c;我們通過ref引用element-plus組件內部方法時&#xff0c;編輯器沒有提示信息&#xff0c;通常我們都是如下寫法 這里想進行一下表單校驗&#xff0c;需要引用el-form組件中的validate方法&#xff0c;從這里可以看出是沒有給相應的提示信息的。這…