Django網頁開發

Django 學習


課程目標及內容

學些網址

慕課網杜秉軒老師課程

課程目標

  • 學習並掌握Django的基本語法

  • 瞭解Django的部分原理以及各組件的額含義

  • 可以獨立使用Django進行基本的網絡開發

課程內容

  • 瞭解Django

  • 搭建開發環境

  • 完成一個簡單的個人博客網站

知識要求

  • 掌握Python預研

  • 瞭解HTML預研

  • 瞭解瀏覽器上網的基本原理


課前準備

Django簡介

Django是一個基於Python的高級Web開發框架,開源

pip install Django==1.10.2
python -m django --version

在這裏插入圖片描述

瀏覽器基本原理

本質是網絡通信,即通過網絡進行數據傳遞,瀏覽器通過通信後獲取該頁面的源代碼文檔,然後解析後返回給頁面
在這裏插入圖片描述
在這裏插入圖片描述

Python 環境搭建

python

  • 下載路徑:https://www.python.org/downloads/
  • 系統: 64 、32
  • 環境變量

django

  • 下載路徑:https://www.djangoproject.com/download/
  • python版本
  • 安裝方式:pip、源碼安裝

開發工具

  • Pycharm
  • Sublime Text
  • Atom

創建項目

創建步驟

進入想要創建項目的目錄
輸入: django-admin startproject myblog

項目目錄結構

目錄名稱不建議後期修改
在這裏插入圖片描述

wsgi.py

WSGI(Python Web Server Gateway Interface)

中文名: Python服務器網關接口

Python應用與Web服務器之間的接口

urls.py

URL配置文件

Django項目中所有頁面都需要配置URL

settings.py

項目配置總文件

BASE_DIR :項目根目錄

init.py

Python中聲明模塊

內容默認爲空

啓動命令

python manage.py runserver
python manage.py runserver 9999 # 修改端口號

創建應用

創建步驟

打開命令行,進入manage.py同級目錄
輸入: python manage.py startapp blog
添加應用名到 setting.py中的INSTALLED_APPS裏

在這裏插入圖片描述

目錄結構

在這裏插入圖片描述

migrations

數據移植模塊

admin.py

該應用的後臺管理系統配置

apps.py

該應用的一些配置

Django-1.9以後自動生成

models.py

數據模型模塊

使用ORM框架

類似MVC結構中的Models模塊

tests.py

自動化測試模塊

Django提供了自動化測試功能

在這裏編寫測試腳本

views.py

執行響應的邏輯代碼

代碼邏輯處理的主要地點

項目中大部分代碼在這裏編寫

創建一個響應(頁面)

編輯blog.views

每一個響應對應一個函數,函數必須返回一個響應

函數必須存在一個參數。一般約定爲request

每一個響應函數對應一個URL

編輯urls.py

每個URL都以url的形式寫出來

url函數存放在urlpatterns列表中

url函數三個參數:URL(正則),對應方法、名稱


創建Templates

配置URL(包含其他URL)

在根urls.py中引入include

在APP目錄下創建urls.py文件,格式與根urls.py相同

根urls.py中url函數的第二個參數改爲include(‘blog.urls’)

注意項

根url.py針對APP配置的URL名稱,是該APP所有URL的總路徑

配置URL時注意正則表達式結尾符號$和/

Templates

  • HTML文件
  • 使用了Django模板語言(Django TemplateLanguage,DTL)
  • 可使用第三方模板(Jinja2)
  • 修改模板:修改settings.py中的TEMPLATES.BACKEND
創建步驟
在APP的根目錄下創建Tempaltes目錄
在該目錄下創建HTML文件
在views.py中返回render()
DTL初步使用
  • render()函數中支持一個dict類型參數
  • 該字典是後臺傳遞到模板的參數,鍵爲參數名
  • 在模板中使用{{參數名}}來直接使用
Django查找Template
  • Django按照INSTALLED_APPS中的添加順序查找Templates
  • 不同APP下Tempaltes目錄中的同名.html文件會衝突
  • 解決方案:在APP的Tempaltes目錄下創建以APP爲名稱的目錄,將.html文件放入其中

Models

Models

  • 一個Model對應數據庫的一張數據表
  • Django中Models以類的形式表現
  • 它包含一些基本字段以及數據的一些行爲

ORM

  • 對象關係一映射(Object Relation Mapping)
  • 實現了對象和數據庫之間的映射
  • 隱藏了數據訪問細節,不需要編寫SQL語句

步驟

在應用根目錄下創建models.py,並引入models模塊
創建類,繼承models.Model,該類就是一張數據表
在類中創建字段

編寫Models

字段創建
字段即類裏面的屬性
attr = models.CharField(max_length=64)
htts://docs.djangoproject.com/en/1.10/ref/models/fields
生成數據表
進入目錄
python manage.py makemigrations app_name(可選)
python manage.py migrate
查看
Django會自動在app/migrations/目錄下生成移植文件
執行 python manage.py sqlmigrate 應用名 文件id 查看SQL語句
頁面呈現

views.py 中import models

models.Article.objects.all()


Admin

Admin

  • Django自帶的一個功能強大的自動化數據管理界面
  • 被授權的用戶可以直接在Admin中管理數據庫
  • Django提供了許多針對Admin的定製功能

配置Admin

python manage.py createsuperuser 創建超級用戶
localhost:8000/adimn/  Admin入口
修改settings.py中LANGUAGE_CODE = 'zh_Hans' 修改頁面爲中文
配置應用

在應用下admmin.py中引入自身的models模塊

編輯admin.py:admin.site.register(Article)

修改數據默認顯示名稱

在Article類下添加一個方法

根據Python版本選擇 str(self)或 _unicode(self)

return self.title


博客開發

博客頁面設計

  • 博客主頁面
  • 博客文章內容頁面
  • 博客撰寫頁面

博客主頁面

  • 文章標題列表,超鏈接
  • 發表博客按鈕,超鏈接
列表編寫思路
  • 取出數據庫中所有文章對象
  • 將文章對象打包成列表,傳遞到前端
  • 前端頁面把文章標題以超鏈接的形式逐個列出
# 模板for循環
{% for xxx in xxs: %}
    HTML語句
{% else: %}
	HTML語句
{% endfor %}

博客文章內容頁面

  • 標題
  • 文章內容
  • 修改文章按鈕(超鏈接)
添加響應函數 views.py
增加新的 html文件  Tempaltes/*.html
添加URL urls.py

在這裏插入圖片描述

超鏈接配置

href後面是目標地址

template中可以用“{% url ’app_name:url_name‘ param %}”

其中app_name和url_name都在url中配置

二級路由: app_name = ‘blog’
在這裏插入圖片描述

博客撰寫頁面

  • 標題編輯欄
  • 文章內容編輯區域
  • 提交按鈕
編輯響應函數
使用request.Post[]
{% csrf_token %} post請求表單需要
修改數據
article = models.Article.objects.get(pk=article_id)
article.title = title
article.content = content
article.save()

補充內容

Templates過濾器

定義
  • 寫在末班做,屬於Django模板語言
  • 可以修改模板中的變量,從而顯示不同的內容
使用
<input type="hidden" name="article_id" value="{{ article.id | default:'0' }}"/>

在這裏插入圖片描述

更多過濾器
https://docs.djangoproject.com/en/1.10/ref/templates/builtins/#filter

Django Shell

定義
  • 它是一個Python的交互式命令行程序
  • 它自動引入了我們的項目環境
  • 我們可以使用它與我們的項目進行交互
使用
python manage.py shell
from blogs.models import Article
Article.objects.all()
作用
  • 使用Django Shell進行一些調試
  • 測試未知的方法

Admin 增強

創建admin配置類
class ArticleAdmin(admin.ModelAdmin)
admin.site.register(Article, ArticleAdmin)
顯示其他字段
list_display = ('title', 'content', 'pub_time')
list_display同時支持tuple和list

在這裏插入圖片描述

過濾器
list_filter = ('pub_time', )

在這裏插入圖片描述


課程總結

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章