28. Python Web 編程:Django 基礎教程

目錄

    • 安裝使用
    • 創建項目
    • 啟動服務器
    • 創建數據庫
    • 創建應用
    • 創建模型
    • 設計路由
    • 設計視圖
    • 設計模版

安裝使用

Django 項目主頁:https://www.djangoproject.com

訪問官網 https://www.djangoproject.com/download/ 或者 https://github.com/django/django

'''Windows 按住win+R 輸入 cmd,Mac 打開Terminal
pip install Django==3.1.7
或者
git clone https://github.com/django/django.git
'''
# 輸入python進入解釋器,查看版本
import django
print(django.VERSION)
exit()

創建項目

一個網站可以包含多個Django項目,一個Django項目包含多個應用,又包含一組特定的對象,創建項目的基本步驟如下:

  1. 新建文件夾用來存放項目,然后使用cd命令切換到該文件夾下。
  2. 輸入下面命令,在該目錄中新建一個mysite項目。
adjango-admin startproject mysite
zsh: command not found: adjango-admin
# 報錯原因是因為沒配置路徑,在這里就不展示配置路徑,直接用絕對路徑執行,如下
/Users/guanfawang/opt/anaconda3/lib/python3.9/site-packages/django/bin/django-admin.py startproject mysite

在這里插入圖片描述

  • manage.py:Django 管理主程序,也是實用的命令工具,方便管理Django項目,同時方便用戶以各種方式與Django項目進行交互。
  • __init__.py:一個空文件,告訴Python該目錄是一個Python包。
  • settings.py:全局配置文件。包括Django模塊應用配置、數據庫配置、模版配置等。
  • urls.py:路由配置文件,包含URL的配置文件,也是用戶訪問Django應用的方式。
  • wigs.py:一個與WSGI 兼容的Web服務器入口,以便運行項目,相當于網絡通信模塊。

這些文件僅僅包含一個最簡單的Web應用所需要的代碼。當Web應用變得復雜時,將對這些代碼進行擴充。

啟動服務器

執行下面代碼,啟動Web服務器。

cd mysite
python manage.py runserver

在這里插入圖片描述

復制網址,瀏覽器打開,可以看到下面情況,說明Web服務器啟動成功。

在這里插入圖片描述

使用Ctrl+C中斷該服務器。

創建數據庫

Django 內置SQLite數據庫,同時支持更多的數據庫,如MySQL、PostgreSQL等,每個Django應用目錄中都包含一個settings.py文件,可以用來實現對數據庫的配置。

# 源settings.py文件默認sqlite3
DATABASES = {'default': {'ENGINE': 'django.db.backends.sqlite3','NAME': BASE_DIR / 'db.sqlite3',}
}# 可以將它修改成mysql
DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','HOST': '127.0.0.1','PORT': '3306','USER': 'root','PASSWORD': '11111111','NAME': 'webname'}
}# 輸入一下命令創建
python manage.py migrate
'''報錯:原因是Django并不認這個外來文件驅動
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.
Did you install mysqlclient?
'''
# 可以在__init__.py空文件中,添加以下命令
import pymysql
pymysql.install_as_MySQLdb()# 再一次執行創建,就生成了
python manage.py migrate
或者
python manage.py makemigrations

在這里插入圖片描述

進一步使用客戶端工具連接mysql,就可以看到相關表和數據了。

在這里插入圖片描述

創建應用

一個Django項目可以包含多個Django應用,執行下面命令將會生成下圖相關文件。

python manage.py startapp demo

在這里插入圖片描述

  • migrations:該文件夾用于在之后定義引用遷移功能。
  • __init__.py:一個空文件,在這里是必須的。用來將整個應用作為一個Python模塊加載。
  • admin.py:管理站點模型,用于編寫Django自帶的后臺相關操作,默認為空。
  • apps.py:定義應用信息。
  • models.py:設置數據模型,即定義數據表結構。
  • tests.py:用于編寫測試代碼的文件。
  • views.py:包含視圖模型的相關操作,即定義業務邏輯。

創建模型

創建模型其實就是創建表,Django通過Model操作數據庫,自動生成相應數據庫類型的SQL語句,所以不需要關注SQL語句和類型,Django自動完成對數據的操作,只要能夠設計Model即可。

打開models.py文件、settings.py文件,添加以下相應的代碼。

# models.py文件添加下面代碼,可以創建數據表格對應的數據模型
from django.db import models # 引用數據庫創建模塊
class Test(models.Model): # 定義表結構,下面是字段列表username = models.CharField(primary_key=True,max_length=20) password = models.CharField(max_length=20) # 定義了password 字段,models.CharField相當于 varchar# settings.py文件新的app:demo
INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','demo'
]

創建表結構

python manage.py migrate
'''
Migrations for 'demo':demo/migrations/0001_initial.py- Create model Test
'''

在這里插入圖片描述

讓Django知在數據模型中有一些變更。

python manage.py makemigrations demo
'''
Migrations for 'demo':demo/migrations/0001_initial.py- Create model Test
'''

創建demo數據表結構

python manage.py migrate demo
'''
Operations to perform:Apply all migrations: demo
Running migrations:Applying demo.0001_initial... OK
'''

返回客戶端工具查看,可以發現新生成了demo_test表。

在這里插入圖片描述

設計路由

路由就是根據不同的URL分發不同的信息。路由處理就是在服務器端接收到HTTP請求之后,能夠對請求的路徑字符串進行匹配處理,并根據URL調用相應的應用程序。

URL在Django中其實是由用戶自己構造的,Django約定URL是在項目同名目錄下的url.py文件的urlpatterns列表構造的。

# demo 應用中 view.py 文件,添加下面代碼
from django.http import HttpResponse # 導入HTTP響應模塊def hi(request): # 定義視圖函數return HttpResponse('Hi,my baby') # 設計響應內容,返回響應信息# 編寫路由,url.py 添加下面代碼,綁定URL與視圖函數
from demo import views # 導入模塊視圖urlpatterns = [path('admin/', admin.site.urls),path('hi/',views.hi) # 添加一個元素,定義路由
]

在瀏覽器中輸入:http://127.0.0.1:8000/hi/ 就能看到響應信息,如下圖。

在這里插入圖片描述

設計視圖

每一個URL都對應一個views視圖函數名,視圖函數名不能相同,否則會報錯。Django約定視圖函數寫在APP應用里的views.py文件中。

# demo 應用中 view.py 文件,添加下面代碼
from demo import views # 導入視圖模塊
from django.conf.urls import urlurlpatterns = [path('admin/', admin.site.urls),path('hi/',views.hi),url(r"^show_news/(\d+)/(\d+)$",views.show_news)]# 編寫路由,url.py 添加下面代碼,綁定URL與視圖函數
from django.http import HttpResponse # 導入HTTP響應模塊def hi(request):return HttpResponse('Hi,my baby')def show_news(request,a,b):return HttpResponse("<h1>新聞、界面<p>新聞類別:%s</p><p>當前頁面:%s</p>"%(a,b))

在瀏覽器中輸入:http://127.0.0.1:8000/hi/)show_news/2/3 就能看到響應信息,如下圖。

在這里插入圖片描述

設計模版

當用戶發送請求的時候,視圖返回一個響應,響應可以是一個重定向、一個404錯誤、一個XML文檔、一張圖片或者是一個HTML內容的網頁。前面幾個返回的信息比較有限,重點是HTML內容的網頁,把這樣的頁面按規范寫好,然后都放在項目根目錄下的templates文件夾里,這樣的頁面被稱為“模版”頁面。

Django作為成熟的Web框架,需要一種很便利的方法動態生成HTML網頁,因此有了模版這個概念。模版頁面包含一些基礎的HTML代碼和一些特殊的語法,這些特殊的語法主要用于如何將動態數據插入HTML頁面中。

靜態部分:HTML、CSS、Javascript設計。

動態部分:通過Django動態框架設計。

在demo目錄下,創建一個templates目錄,并在templates下創建test.html文件,設計一個簡單的表單頁面,內容如下:

<!DOCTYPE html>
<html lang='en'>
<head><meta charset='UTF-8'><meta name="viewport" content="width=device-width,initial-scale=1.0"><title>Document</title>
</head>
<body>
<form action="search" method="GET"><input type="text" name="name"><input type="submit" value="搜索">
</form>
</body>
</html>

demo 應用中 view.py 文件,添加下面代碼,定義兩個視圖函數。

from django.http import HttpResponsedef hi(request):return HttpResponse('Hi,my baby')def show_news(request,a,b):return HttpResponse("<h1>新聞、界面<p>新聞類別:%s</p><p>當前頁面:%s</p>"%(a,b))def f1(request):return render(request,"test.html")def f2(request):request.encoding='utf-8'if 'name' in request.GET and request.GET["name"]:t = "你搜索的內容為:"+ request.GET['name']else:t = '提交的表單為空'return  HttpResponse(t)

編寫路由,在url.py 添加下面代碼,綁定URL與視圖函數。

from demo import views
from django.conf.urls import urlurlpatterns = [path('admin/', admin.site.urls),path('hi/',views.hi),url(r"^show_news/(\d+)/(\d+)$",views.show_news),url(r"^search_form$",views.f1),url(r"search$",views.f2)
]

啟動服務器:python manage.py runserver。瀏覽器輸入http://127.0.0.1:8000/search_form,進一步輸入網絡爬蟲,可以得到如下結果。

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/215484.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/215484.shtml
英文地址,請注明出處:http://en.pswp.cn/news/215484.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

docker build構建報錯:shim error: docker-runc not installed on system

問題&#xff1a; docker構建鏡像時報錯&#xff1a;shim error: docker-runc not installed on system 解決&#xff1a; ln -s /usr/libexec/docker/docker-runc-current /usr/bin/docker-runc

MySQL數據庫——鎖-表級鎖(表鎖、元數據鎖、意向鎖)

目錄 介紹 表鎖 語法 特點 元數據鎖 介紹 演示 意向鎖 介紹 分類 演示 介紹 表級鎖&#xff0c;每次操作鎖住整張表。鎖定粒度大&#xff0c;發生鎖沖突的概率最高&#xff0c;并發度最低。應用在MyISAM、InnoDB、BDB等存儲引擎中。 對于表級鎖&#xff0c;主要…

選擇排序和堆排序

目錄 前言 一.選擇排序 1.思想 2.實現 3.特點 二.堆排序 1.思想 2.實現 3.特點 前言 排序算法是計算機科學中的基礎工具之一&#xff0c;對于數據處理和算法設計有著深遠的影響。了解不同排序算法的特性和適用場景&#xff0c;能夠幫助程序員在特定情況下…

【Go】基于GoFiber從零開始搭建一個GoWeb后臺管理系統(一)搭建項目

前言 最近兩個月一直在忙公司的項目&#xff0c;上班時間經常高強度寫代碼&#xff0c;下班了只想躺著&#xff0c;沒心思再學習、做自己的項目了。最近這幾天輕松一點了&#xff0c;終于有時間 摸魚了 做自己的事了&#xff0c;所以到現在我總算是搭起來一個比較完整的后臺管…

nrfutil工具安裝

準備工作&#xff0c;下載相關安裝包 鏈接&#xff1a;https://pan.baidu.com/s/1LWxhibf8LiP_Cq3sw0kALQ 提取碼&#xff1a;2dlc 解壓后&#xff0c;分別安裝以下安裝包 在C盤下創建目錄nordic_tools&#xff0c;并將nrfutil復制到剛創建的目錄下 環境變量path下添加C:\nor…

圖像采集卡 Xtium?2-XGV PX8支持高速 GigE Vision 工業相機

圖像采集卡&#xff08;Image Capture Card&#xff09;&#xff0c;又稱圖像捕捉卡&#xff0c;是一種可以獲取數字化視頻圖像信息&#xff0c;并將其存儲和播放出來的硬件設備。很多圖像采集卡能在捕捉視頻信息的同時獲得伴音&#xff0c;使音頻部分和視頻部分在數字化時同步…

python elasticsearch 日期聚合

索引以及數據如下 PUT dateagg {"mappings": {"properties": {"charge":{"type": "double"},"types":{"type": "keyword"},"create_date":{"type": "date",&…

裸機單片機適用的軟件架構

單片機通常分為三種工作模式&#xff0c;分別是 1、前后臺順序執行法 2、操作系統 3、時間片輪詢法 1、前后臺順序執行法 利用單片機的中斷進行前后臺切換&#xff0c;然后進行任務順序執行&#xff0c;但其實在…

Spring Boot Web

目錄 一. 概述 二. Spring Boot Web 1.2.1 創建SpringBoot工程&#xff08;需要聯網&#xff09; 1.2.2 定義請求處理類 1.2.3 運行測試 1.3 Web分析 三. Http協議 3.1 HTTP-概述 剛才提到HTTP協議是規定了請求和響應數據的格式&#xff0c;那具體的格式是什么呢? 3…

spring結合設計模式之策略模式

策略模式基本概念&#xff1a; 一個接口或者抽象類&#xff0c;里面兩個方法&#xff08;一個方法匹配類型&#xff0c;一個可替換的邏輯實現方法&#xff09;不同策略的差異化實現(就是說&#xff0c;不同策略的實現類) 使用策略模式替換判斷&#xff0c;使代碼更加優雅。 …

Swagger快速上手

快速開始&#xff1a; 導入maven包 <dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.7.0</version> </dependency><dependency><groupId>io.springfox<…

MongoDB在Windows系統和Linux系統中實現自動定時備份

本文主要介紹MongoDB在Windows系統和Linux系統中如何實現自動定時備份。 目錄 MongoDB在Windows系統中實現自動定時備份MongoDB在Linux系統中實現自動定時備份備份步驟備份恢復 MongoDB在Windows系統中實現自動定時備份 要在Windows系統中實現自動定時備份MongoDB數據庫&#…

區塊鏈實驗室(32) - 下載arm64的Prysm

Prysm是Ethereum的共識層。 1. 下載prysm.sh curl https://raw.githubusercontent.com/prysmaticlabs/prysm/master/prysm.sh --output prysm.sh && chmod x prysm.sh2. 下載x86版prysm共識客戶端 ./prysm.sh beacon-chain --download-only3.下載arm64版prysm共識客…

刪除當前目錄及其子目錄下的重復文件

言歸正傳&#xff0c;直接看代碼 public class RemoveDuplicateFiles {public static void main(String[] args) throws IOException {String directoryPath "D:\\dir";List<File> allFiles getAllFiles(directoryPath);removeDuplicateFile(allFiles);}pri…

HP108w打印機出現Direct.....無線網,連接不上

本人用手機打印的&#xff0c;安卓 這種情況我也不知道為啥出現&#xff0c;如果出現上面的情況&#xff0c;可以 一直按住&#xff0c;會發藍光的&#xff0c;無線信號樣子的按鈕&#xff0c;持續按20s&#xff0c;松手后觀察自己的wifi列表&#xff0c;本人出現了&#xff…

Linux——web網站服務(一)

一、安裝httpd服務器Apache網站服務 1、準備工作 為了避免發送端口沖突&#xff0c;程序沖突等現象&#xff0c;卸載使用rpm方式安裝的httpd #使用命令檢查是否下載了httpd [rootserver ~]# rpm -qa httpd #如果有則使用 [rootserver ~]# rpm -e httpd --nodeps Apache的配置…

抖音小店經營規則解析:避免被扣分的關鍵因素

抖音小店是一個受歡迎的電商平臺&#xff0c;為創業者提供了良好的銷售和推廣機會。為了確保在抖音小店的運營中不會被扣分或出現其他問題&#xff0c;不若與眾整理了幾個關鍵的規則需要注意和遵守。 1. 產品合規性&#xff1a; 抖音小店要求所有銷售的產品必須合法合規&#x…

欣賞動態之美,不如欣賞C語言實現動態內存管理之美 ! ! !

本篇會加入個人的所謂‘魚式瘋言’ ??????魚式瘋言:??????此瘋言非彼瘋言 而是理解過并總結出來通俗易懂的大白話, 我會盡可能的在每個概念后插入魚式瘋言,幫助大家理解的. 可能說的不是那么嚴謹.但小編初心是能讓更多人能接受我們這個概念 &#xff01;&#xff0…

ubuntu解決問題:E: Unable to locate package manpages-posix-dev

sudo apt-get install manpages-posix-dev 想要在ubuntu里面安裝manpages-posix-dev這個包&#xff0c;發現彈出錯誤 E: Unable to locate package manpages-posix-dev 解決方法如下&#xff1a; 1 查看當前ubuntu的版本 abhishekitsfoss:~$ lsb_release -a No LSB module…

python自動化測試實戰 —— WebDriver API的使用

軟件測試專欄 感興趣可看&#xff1a;軟件測試專欄 自動化測試學習部分源碼 python自動化測試相關知識&#xff1a; 【如何學習Python自動化測試】—— 自動化測試環境搭建 【如何學習python自動化測試】—— 瀏覽器驅動的安裝 以及 如何更…