Django學習筆記一:搭建簡易博客
最近在學習Django框架,記錄一下學習筆記。
我的項目源碼已經上傳到github:https://github.com/xuna123/Django_study1/tree/master
本文原發於: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
運行開發伺服器,訪問 http://127.0.0.1:8000/admin/ :
輸入註冊的帳號和密碼,登進去可以看到我們剛才註冊的Article模型:
現在我們在後台編輯一篇文章:
(2)運行開發伺服器,訪問 http://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,結束
菜鳥教程:http://www.runoob.com/django/django-tutorial.html
django博客教程:http://zmrenwu.com/category/django-blog-tutorial/
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特色數據類型(函數)(上)