Django基礎---Web框架、Django的使用
Django基礎—Web框架
MVC和MTV框架
MVC
把Web應用分為模型(M)、視圖(V)、控制器(C)三層,他們之間以一種插件式的,松耦合的方式聯系在一起。模型負責業務對象與數據庫的映射(ORM),視圖負責與用戶的交互(頁面),控制器接收用戶的輸入調用模型和視圖完成用戶的請求。
MTV
Django的MTV模式本質上和MVC是一樣的,也是為了各組件間保持松耦合關系,只是定義上有些許不同,Django的MTV分別是值:
- M 代表模型(Model): 負責業務對象和數據庫的關系映射(ORM)。
- T 代表模板 (Template):負責如何把頁面展示給用戶(html)。
- V 代表視圖(View): 負責業務邏輯,并在適當時候調用Model和Template。
除了以上三層之外,還需要一個URL分發器,它的作用是將一個個URL的頁面請求分發給不同的View處理,View再調用相應的Model和Template,MTV的響應模式如下所示:
一般是用戶通過瀏覽器向我們的服務器發起一個請求(request),這個請求回去訪問視圖函數,(如果不涉及到數據調用,那么這個時候視圖函數返回一個模板也就是一個網頁給用戶),視圖函數調用模型,模型去數據庫查找數據,然后逐級返回,視圖函數把返回的數據填充到模板中空格中,最后返回網頁給用戶。
Django下載與安裝
- 下載
pip3 install django==1.11.9
- 創建一個django project
1. 創建項目
django_projects>django-admin startproject first_project
2. 啟動
python manage.py runserver 127.0.0.1:8080
C:\Users\libo>d:
D:\>cd django_projects
D:\django_projects>dir
驅動器 D 中的卷是 DATADRIVE1
卷的***是 C0DB-27ED
D:\django_projects 的目錄
2020/11/10 11:16 <DIR> .
2020/11/10 11:16 <DIR> ..
0 個文件 0 字節
2 個目錄 967,474,065,408 可用字節
D:\django_projects>django-admin startproject first_project
D:\django_projects>dir
驅動器 D 中的卷是 DATADRIVE1
卷的***是 C0DB-27ED
D:\django_projects 的目錄
2020/11/10 11:18 <DIR> .
2020/11/10 11:18 <DIR> ..
2020/11/10 11:18 <DIR> first_project
0 個文件 0 字節
3 個目錄 967,474,053,120 可用字節
D:\django_projects>cd first_project
D:\django_projects\first_project>dir
驅動器 D 中的卷是 DATADRIVE1
卷的***是 C0DB-27ED
D:\django_projects\first_project 的目錄
2020/11/10 11:18 <DIR> .
2020/11/10 11:18 <DIR> ..
2020/11/10 11:18 <DIR> first_project
2020/11/10 11:18 833 manage.py
1 個文件 833 字節
3 個目錄 967,474,053,120 可用字節
D:\django_projects\first_project>python manage.py runserver 127.0.0.1:8080
Performing system checks...
System check identified no issues (0 silenced).
You have 13 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
November 10, 2020 - 11:23:03
Django version 1.11.9, using settings 'first_project.settings'
Starting development server at http://127.0.0.1:8080/
Quit the server with CTRL-BREAK.
[10/Nov/2020 11:23:32] "GET / HTTP/1.1" 200 1716
Not Found: /favicon.ico
[10/Nov/2020 11:23:32] "GET /favicon.ico HTTP/1.1" 404 1969
- 創建應用
D:\django_projects\first_project>python manage.py startapp app01
在first_project下的settings里的INSTALLED_APPS例表里添加你的應用
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app01',
]
- 在pycharm中創建django項目
基于Django實現一個簡單的示例
- url控制器(第一步就找它)
#找對應的函數,是哪個app里面的函數
from app01 import views
urlpatterns = [
path('admin/', admin.site.urls), #這個先不用管,后面會學
path('index/',views.index),
]
- 在templates里創建login.html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- 上述3個meta標簽*必須*放在最前面,任何其他內容都*必須*跟隨其后! -->
<title>Bootstrap 101 Template</title>
<!-- Bootstrap -->
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet">
<!-- HTML5 shim 和 Respond.js 是為了讓 IE8 支持 HTML5 元素和媒體查詢(media queries)功能 -->
<!-- 警告:通過 file:// 協議(就是直接將 html 頁面拖拽到瀏覽器中)訪問頁面時 Respond.js 不起作用 -->
<!--[if lt IE 9]>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/html5shiv.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dest/respond.min.js"></script>
<![endif]-->
</head>
<body>
<h1>歡迎來到登錄頁面!</h1>
<form action="">
用戶名:<input type="text" name="username">
密碼:<input type="text" name="password">
<input type="submit">
</form>
<!-- jQuery (Bootstrap 的所有 JavaScript 插件都依賴 jQuery,所以必須放在前邊) -->
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/jquery.min.js"></script>
<!-- 加載 Bootstrap 的所有 JavaScript 插件。你也可以根據需要只加載單個插件。 -->
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.min.js"></script>
</body>
</html>
- views視圖
# Create your views here.
def index(request):
return render(request, 'login.html')
- 啟動后,在瀏覽器輸入localhost/index即可訪問
get請求獲取數據
# print(request.GET) # <QueryDict: {'username': ['laowang'], 'password': ['123']}>
username = request.GET.get('username')
password = request.GET.get('password')
if username == 'laowang' and password == '123':
return HttpResponse('登錄成功!')
else:
return HttpResponse('登錄失敗!')
post請求獲取數據
先關掉一個認證機制,settings配置文件中
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
# 'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
if request.method == 'GET':
return render(request, 'login.html')
else:
username = request.POST.get('username')
password = request.GET.get('password')
if username == 'laowang' and password == '123':
return HttpResponse('登錄成功!')
else:
return HttpResponse('登錄失敗!')
寫項目
第一步
1. 創建項目 first_project
2. 創建app app01
做一個登錄頁面的Web項目,瀏覽器輸入一個網址得到一個Web頁面
用戶: http:127.0.0.1:8000/login/
1. urls.py
urlpatterns = [
# url(r'^admin/', admin.site.urls),
url(r'^index/', views.index), # 配置路徑
]
2. 寫邏輯視圖views.py
def index(request): # HttpRequest
# # print(request.GET) # <QueryDict: {'username': ['laowang'], 'password': ['123']}>
# username = request.GET.get('username')
# password = request.GET.get('password')
# if username == 'laowang' and password == '123':
# return HttpResponse('登錄成功!')
# else:
# return HttpResponse('登錄失敗!')
# request.method GET POST
if request.method == 'GET':
return render(request, 'login.html')
else:
username = request.POST.get('username')
password = request.GET.get('password')
if username == 'laowang' and password == '123':
return HttpResponse('登錄成功!')
else:
return HttpResponse('登錄失敗!')
3. 創建html文件
在templates文件架中創建一個login.html文件
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- 上述3個meta標簽*必須*放在最前面,任何其他內容都*必須*跟隨其后! -->
<title>Bootstrap 101 Template</title>
<!-- Bootstrap -->
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet">
<!-- HTML5 shim 和 Respond.js 是為了讓 IE8 支持 HTML5 元素和媒體查詢(media queries)功能 -->
<!-- 警告:通過 file:// 協議(就是直接將 html 頁面拖拽到瀏覽器中)訪問頁面時 Respond.js 不起作用 -->
<!--[if lt IE 9]>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/html5shiv.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dest/respond.min.js"></script>
<![endif]-->
</head>
<body>
<h1>歡迎來到登錄頁面!</h1>
<form action="/index/" method="post">
用戶名:<input type="text" name="username">
密碼:<input type="text" name="password">
<input type="submit">
</form>
<!-- jQuery (Bootstrap 的所有 JavaScript 插件都依賴 jQuery,所以必須放在前邊) -->
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/jquery.min.js"></script>
<!-- 加載 Bootstrap 的所有 JavaScript 插件。你也可以根據需要只加載單個插件。 -->
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.min.js"></script>
</body>
</html>
智能推薦
Django Web框架02
《Django Web框架》 目錄 文章目錄 《Django Web框架》 目錄 Django的框架設計模式 模板 Templates Django 模板語言 模板的傳參 模板的變量 XSS攻擊 反射型xss 存儲型xss DOM xss 模板的標簽 過濾器 模板的繼承 url 反向解析 Django的框架設計模式 MVC 設計模式 MVC 代表 Model-View-Controller(模型-...
Django框架的初使用
1Django框架的初使用 說起Django框架,肯定需要首先明確一個概念,即軟件框架。下面就是第一個問題: 1 軟件框架(software framework) 1.1 概念界定 軟件框架:通常指的是為了實現某個業界標準或完成特定基本任務的軟件組件規范,也指為了實現某個軟件組件規范時,提供規范所要求之基礎功能的軟件產品。1 軟件框架是具有基礎功能的軟件產品: 基礎功能:可以理解為為了滿足某類業務...
Django框架 -- 模板的使用
1)在項目根目錄中創建模板目錄templates。 2)在settings.py配置文件中修改TEMPLATES配置項的DIRS值。 3)在templates目錄中新建一個模板文件index.html。 4)模板渲染。 ...
基于Django框架的python web
項目名稱:基于Django的python web 摘要 Django是一個開放源代碼的Web應用框架,由Python寫成。采用了MTV的框架模式,即模型M,視圖V和模版T。它最初是被開發來用于管理勞倫斯出版集團旗下的一些以新聞內容為主的網站的,即是CMS(內容管理系統)軟件。并于2005年7月在BSD許可證下發布。這套框架是以比利時的吉普賽爵士吉他手Django Reinhardt來命名的。201...
Django web 基礎
一、Django概述 Django大而全; 創建Django工程:django-admin startproject sitename 創建django之后生成的目錄結構如下: Django工程目錄結構 D:\python_scripts\s11day17_Django>python manage.py startapp app01 #創建app;一個app是一個完整的軟件或者功...
猜你喜歡
freemarker + ItextRender 根據模板生成PDF文件
1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...
電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!
Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...
requests實現全自動PPT模板
http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...