Django學習筆記一:搭建簡易博客

最近在學習Django框架,記錄一下學習筆記。

我的項目源碼已經上傳到github:github.com/xuna123/Djan

本文原發於:Django學習筆記一:搭建簡易博客 - xunalove的博客 - CSDN博客

1.前言:

Django是一個開放源代碼的Web應用框架,由Python寫成。採用了MVC的軟體設計模式,即模型M,視圖V和控制器C。

Django框架的核心:

一個面向對象的映射器,用作數據模型(以python類的形式定義)和關係性資料庫間的媒介。

一個基於正則表達式的URL分發器。

一個視圖系統,用於處理請求。

一個模板系統。

2.開發環境:

  • 操作系統:虛擬機ubuntu 16.04 64bit
  • Django :1.11.3
  • Python : 3.5.2
  • IDE: atom 1.18.0
  • 資料庫:Django自帶的SQLite3(類似與access,SQLite3 是一個十分輕巧的資料庫,它僅有一個文件)

3.簡單博客實現的功能 :

從資料庫獲得文章數據,顯示在前台。

文章的屬性:標題,正文,作者,發表時間四項。

4.創建Django項目與應用

(1)

#創建項目 相當於項目的容器ndjango-admin.py startproject esay_blog n#創建應用appndjango-admin.py startapp blog n

此時項目文件夾的樹形結構為:

- easy_blog。

- manage.py: Django項目裡面的工具,可以調用數 據庫。

- settings.py: 該 Django 項目的設置/配置。

- urls.py: 該 Django 項目的 URL 聲明,一份由 Django 驅動的網站」目錄」。

- wsgi.py: 一個 WSGI 兼容的 Web 伺服器的入口,以便運行你的項目。

- blog:建立的django應用

(2)本地運行伺服器,查看項目運行:

python3 manage.py runservern

打開瀏覽器,輸入地址如下出現如下則創建成功:

(3)註冊博客應用

easy_blog/easy_blog/settings.pyn# Application definitionnINSTALLED_APPS = [n django.contrib.admin,n django.contrib.auth,n django.contrib.contenttypes,n django.contrib.sessions,n django.contrib.messages,n django.contrib.staticfiles,n blog, #註冊的博客應用n]n

5.設計資料庫模型(M)

簡易的博客主要包含文章,文章含有標題,正文,作者,發表時間。這些數據存在資料庫就是一個類似下面的表格形式,而且會給每篇博客自動創建一個id。

id 標題 正文 發表時間

1 title 1 text 1 2017-7-19

2 title 2 text 2 2017-7-20

(1)編寫文章部分代碼:

easy_blog/blog/models.pyn# -*- coding: utf-8 -*-nfrom __future__ import unicode_literalsnnfrom django.db import modelsnfrom django.contrib.auth.models import Usernn# Create your models here.nclass Article(models.Model):n n 文章資料庫n n #文章標題欄位 CharField相當於sql裡面的charn title = models.CharField(max_length=70)nn #文章正文欄位n body = models.TextField()nn #文章的創建時間n created_time =models.DateTimeField()n

(2)將Python語言翻譯成資料庫語言,在資料庫中創建我們想要的表格

#Django 在 blog 應用的 migrations 目錄下生成了一個 0001_initial.py 文件,這個文件是 Django 用來記錄我們對模型做了哪些修改的文件。npython3 manage.py makemigrationsnpython3 manage.py migraten#翻譯成資料庫語言n

運行顯示如圖則成功:

6.設計Django模板(C)

我們在根目錄下建立 templates文件 ,在templates下面建立一個index.html

主要是把資料庫中的內容呈現在前台。

xuna123/Django_study1

7.設計視圖函數(V)

使用Django裡面的all() 方法從資料庫里獲取了全部的文章,存在了article_list 變數,博客文章列表是按文章發表時間倒序排列的

blog/views.pyn# -*- coding: utf-8 -*-nfrom __future__ import unicode_literalsnnfrom django.shortcuts import rendernfrom .models import Articlenn# Create your views here.ndef index(request):n article_list = Article.objects.all().order_by(-created_time)nn #文章列表數據的 article_list 變數傳給了模板n return render(request, index.html, context={article_list:article_list})n

(1)綁定URL和視圖函數

blog/urls.pynfrom django.conf.urls import urlnfrom . import viewsnurlpatterns = [n n 綁定URL與視圖函數n 把網址和對應的處理函數作為參數傳給url函數n 第一個參數:網址n 第二個參數:處理函數n 第三個參數:別名,顯示在瀏覽器n n url(r^$,views.index, name=index),n]n

(2)告訴項目的url

easy_blog/urls.pynfrom django.conf.urls import url,includenfrom django.contrib import adminnnurlpatterns = [n url(r^admin/, admin.site.urls),n url(r, include(blog.urls)),n]n

8.Django Admin後台管理

Admin是Django自帶的後台管理,我們可以在後台註冊我們的模型,方便寫文章和管理。 (1)創建管理員帳號:

python3 manage.py createsuperusern

根據要求輸入帳號,郵箱,密碼。

(2)註冊我們的模型:

blog/admin.pyn# -*- coding: utf-8 -*-nfrom __future__ import unicode_literalsnnfrom django.contrib import adminnfrom .models import Articlenn# Register your models here.nadmin.site.register(Article)n

(3)啟動伺服器:

python3 manage.py runservern

運行開發伺服器,訪問 127.0.0.1:8000/admin/

輸入註冊的帳號和密碼,登進去可以看到我們剛才註冊的Article模型:

現在我們在後台編輯一篇文章:

(2)運行開發伺服器,訪問 127.0.0.1:8000/ ,此時就可以看到我們剛剛添加的文章。

現在的博客界面比較簡陋。。

9.遇到的問題:

(1) 怎麼樣修改後台界面為中文?時區為中國? 解決方法:修改setting.py的LANGUAGE_CODE項就可以實現(修改如下):

把英文改為中文nLANGUAGE_CODE = en-usnLANGUAGE_CODE = zh-hansn把國際時區改為中國時區nTIME_ZONE = UTCnTIME_ZONE = Asia/ShanghainUSE_I18N = TruenUSE_L10N = TruenUSE_TZ = Truen

此時界面如下:

(2)添加文章時候發現添加內容為中文時出現下列錯誤:

解決方法*:在models.py增加下面代碼:

import sysnreload(sys)nsys.setdefaultencoding(utf8)n

打開瀏覽器,輸入本地ip,結束

菜鳥教程:runoob.com/django/djang

django博客教程:zmrenwu.com/category/dj

django book:http://djangobook.py3k.cn/2.0/?utm_source=qq&utm_medium=social

本文原發於:Django學習筆記一:搭建簡易博客 - xunalove的博客 - CSDN博客

推薦閱讀:

使用 Python 連接 Todoist 與 Pomotodo
黃哥推薦學習Python 10本好書。
Scrapy對接Selenium
Python筆記 · 一個多線程知乎用戶爬蟲的實現
Python從零開始系列連載(26)——Python特色數據類型(函數)(上)

TAG:Python | Django框架 | Python入门 |