Django快速入門
預備知識
Python 基礎,HTML,CSS 以及 Unix 命令行。如果你已經掌握了這些,學習本課程會很輕鬆。
介紹
這不是一個教程。這個快速入門課是一個快速製作基本的 Django 網站的方法,而無需深入了解製作網站應用程序的基本概念。對於快速入門課的每一步,我都會對正在使用的工具和概念添加一個解釋更全面的鏈接,以便於你在創建你的第一個項目時更好的理解 Django。
我們的目標
我們要製作一個網站,你可以用來上傳帶有標題、日期和描述的圖像。很簡單的。
何為 Django?
Django(/JANG-oh/),一個以幫助人們快速創建簡潔穩定的網站而廣為人知的工具(Web 框架)。
使用 Django 遵循以下幾種模式:
1. 模型(Model),如何存儲數據。我們會告訴 Django 在這裡存儲我們的圖像,標題,數據和描述。
2. 視圖(View),項目中在哪裡處理數據。我們的網站在這裡為用戶處理取自模型的數據。
3. 模板(Template),項目如何呈現它所處理的數據。視圖會使用模板來展示基於我們的模型處理的數據。
Django 做了很多複雜(且很有趣)的事情,但是如果你是剛開始接觸,那麼了解這些內容就足夠了。
安裝配置我們的項目
Windows用戶請注意!
默認情況下,Windows 沒有 Unix 命令行,而 Unix 命令行是本速成課的先決條件。Windows 10 在 2018 年 10 月更新的版本中提供了 Linux 子系統(Ununtu)。請安裝並設置 Linux 子系統以使用 Unix 命令行。
我們將使用你計算機的終端來安裝 python 環境和 Django。我們先輸入以下命令,在計算機的 Documents 文件夾創建項目:
python3 -m venv django_cc 會使用名為 django_cc 文件夾為我們的項目創建一個虛擬環境,因此我們為其安裝的所有內容都不會干擾系統中的其他任何內容。
之後我們進入項目文件夾,激活 python 環境並安裝 Django。
- source bin/activate 會激活我們創建的虛擬環境。這意味著如果我們安裝 Django 的話,只會在我們項目中安裝,而不會安裝到整個系統環境中。
- pip install django 會使用 Python 的包管理器安裝最新版本的 Django。
現在已經安裝好了 Django,並且我們得到了一些新的命令。現在我們首先使用 Django 創建一個項目,遷移開發資料庫,最後嘗試首次啟動本地開發伺服器,並確保每一步都正確執行。
- django-admin startproject django_cc 告知 Django 製作我們項目的框架,並且準備接入其他東西(即 django 應用)
- 這也是我找到manage.py的地方,我們使用manage.py跟Django進行交互
- python3 manage.py migrate 用於告知 Django 我們的模型已經發生改變。由於我們的項目剛剛開始,這將是我們的初始遷移操作,建立了 Django 自有的各種模型(即,賬戶,活動日誌,許可權等)。更多...
- python3 manage.py runserver 用於啟動我們的開發伺服器,並用於測試。
要查看正在運行的開發伺服器,在瀏覽器打開 127.0.0.1:8000,可以看到 Django 的啟動頁。
資料庫
接下來選擇你最喜歡的文本編輯器或 python IDE,然後開始深入研究 Django。我們首先創建一個 Django 應用程序,並在此為項目編寫所有模型。
為了讓我們的核心項目能識別到這個應用,我們需要像下面這樣將 blog 添加到 django_cc/settings.py 文件的 INSTALLED_APPS 中:
媒體文件支持
將以下內容添加到 settings.py 的底部,以便 Django 知道我們上傳的媒體文件保存在哪裡:
為了在開發伺服器上訪問這些文件,我們還需要在 django_cc/urls.py 文件底部導入一些包並添加一些條件:
很好,我們現在已經建立項目了,下面就開始編寫模型。
編寫模型
在我們新建的 blog 應用中找到 models.py 文件,我們將在此編寫資料庫模型。Post 類作為上傳帖子的第一個模型,其中包含已發布的圖像,標題,描述和日期。
- models.FileField(upload_to="images/") 作為保存我們上傳的圖像的屬性,並指明將圖像上傳到我們在配置文件中設置的媒體路徑。
- models.CharField(default="", max_length=n) 是一個基本的文本屬性,並且最大長度為 n。
- models.DateField(default=datetime.date.today) 是一個 日期/時間 自解析欄位,並且設置為當前的日期和時間。
我們還需要告知 Django 根據時間逆序排列,然後完成這個模型:
- Meta 類可以做很多事情,這裡我們用它為我們的模型根據時間排序。
- __str__ 方法告知 Django,稍後我們在與管理面板交互時顯示標題(而不是 Post 1,Post 2,等)。
遷移我們的新模型
完成模型後執行下面兩個命令,有必要告知 Django 我們對模型做了一些修改並需要將之應用於資料庫:
恭喜!現在我們已經為發帖子準備好了資料庫。但是有一個問題,我們現在還不能編輯。我們先在 Django 管理面板配置一下,然後就可以發帖了。
管理控制面板
進入我們的 blog 應用的 admin.py 文件並添加以下內容:
- from blog.models import * 導入我們剛剛創建的所有模型。
- admin.site.register(Post) 告訴 Django 在控制面板展示模型。
接下來我們將創建一個超級用戶,來登錄控制面板。輸入以下命令並根據提示操作,你只需要填寫提示的用戶名和密碼。
完成後,請轉到 127.0.0.1:8000/admin 並使用剛剛設定的登錄密碼。你會看到這個頁面:
從這裡你可以看到向 Django 項目中添加帖子。我們已經正式完成了模型部分。接下來設計視圖部分,讓 Django 來為我們的帖子服務。
視圖邏輯
視圖是當我們請求頁面時 Django 處理邏輯的媒介。我們要做的第一件事是在 django_cc 中創建一個 views.py。在文件中粘貼以下內容:
- from django.views.generic import TemplateView 允許我們使用 Django 的基本模板視圖,視圖中我們展示帖子的全部內容。
- from database.models import Post 導入全部資料庫模型用於視圖處理方法。
- PostFeed 是我們的基本模板視圖,它會使用我們接下來創建的 index.html 來渲染我們的資料庫內容。
- get_context_data 是我們從資料庫向模板發送信息的方法。
- context["posts"] = Post.objects.all() 我們的模板會從上下文字典中引用帖子,這些帖子被資料庫使用 Post.objects.all() 收集到列表中。
我們在 urls.py 中添加一個新的路徑,告知 Django 請求該 URL 時調用我們的視圖:
我們的基本視圖邏輯已經完成了,現在需要構建用於展示帖子的索引模板。
模板風格
在 Django 項目的根目錄中,你可以找到 database 和 django_cc 文件夾,然後創建一個 templates 文件夾並在其內創建一個 index.html 文件。我們將使用 Bulma 來設計我們的站點,所以不需要編寫任何 CSS。這裡有一個可以作為模板的樣板文件.
Django 模板使用名為 Django HTML 的 DRY 版本的 HTML。這是我們將向 index.html 模板中發送上下文信息並渲染的方式。在樣板文件的主體中,我們使用帖子中的上下文添加一張卡片。
- {% for post in posts %} 充任 for 循環,將迭代 posts 中每一個帖子信息。
- for 循環每次運行時,如果使用了 {{ < variable > }} 的方式,當前迭代器中帖子的上下文信息回替換到 HTML中。
- {{ post.image.url }} 是你引用圖片 URL 的方式,這裡不能僅僅是引用圖片本身。
當我們訪問 127.0.0.1:8000 是,應該展示我們在控制面板中添加的帖子列表:
現在我們有一個網站,可以整齊的展示我們在 Bulma 控制面板中添加的內容。
結束
Django 是一個構建網站以及其他事物的絕佳框架。今天你已經一個非常基本的網站,能夠像 Instagram 一樣展示帖子,並且希望以後構建一個自己的 Instagram。現在我建議你通過文檔或者這個(我以之入門的)介紹來學習更多關於 Django 的信息。
英文原文:https://ceiphr.com/blog/a-crash-course-in-django
譯者:敦偉
※使用並發加速你的python程序(1)
※遠程訪問虛擬化應用 無需公網IP 這款軟體太強大了
TAG:Python部落 |