Django
Django是重量級的 web應用架構,用Python語言開發
Python和Django 是快速開發、設計、部署網站的最佳組合
MVC模型:
model–模型 編寫程式應有的功能,負責業務對象與資料庫的映射
view–視圖 圖形界面,負責與使用者的互動
controller–控制器 負責轉發請求,對請求進行處理
MTV模型:
model–模型 編寫程式應有的功能,負責業務對象與資料庫的映射
template-模闆 負責把頁面html展示給使用者
view-視圖 負責業務邏輯,并在合适的時候調用module和template
還需要一個URL分發器,将一個一個URL的頁面請求分發給不同的view處理,view再調用相應的model和template
使用者通過浏覽器發起一個request請求,請求會去通路視圖,視圖去子產品裡取資料資料庫是與子產品互動的,傳回給視圖,視圖把要展示的資料傳回給模闆,模闆就是頁面
Django安裝
菜鳥教程https://www.runoob.com/django/django-install.html
檢查Django是否安裝成功,指令行進入Python
xxxx$python
>>import django
>>django.get_version()
Django的指令行:
建立一個項目-HelloWorld
Django-admin.py startproject HelloWorld
Pycharm建立一個Django項目,然後增加自己的自建應用(application), python manage.py startapp 應用名,目錄為:
項目目錄
manage.py 一個實用的指令執行工具,讓你以各種方式與Django項目進行互動
HelloWorld 下會有一個同名的子目錄,子目錄HelloWorld下:
settings --Django的項目配置
urls --Django項目的URL聲明,一份由Django驅動的網站目錄
wsgi --一個WSGI相容的web伺服器入口,以便運作你的項目
啟動伺服器
python manage.py runserver
python manage.py runserver 0.0.0.0:8000
0.0.0.0 讓其它電腦可連接配接到開發伺服器,8000 為端口号。如果不說明,那麼端口号預設為 8000。
在浏覽器輸入你伺服器的 ip(這裡我們輸入本機 IP 位址: 127.0.0.1:8000) 及端口号
視圖和URL配置
有自建應用,必須先把自建應用的名字加到settings的install_APP裡面–pycharm建立的會自動加
修改settings
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'user', #自建的
'test_tools', #自建的
'case' #自建的
]
#下面修改一些普通配置
LANGUAGE_CODE = 'zh-Hans' #修改中文編碼
TIME_ZONE = 'Asia/Shanghai' #修改時區
USE_I18N = True
USE_L10N = True
USE_TZ = False #這裡也改一下,要不然資料庫用的還是标準時區
在自建應用zyy的view裡配置,配置自己的view
from django.http import HttpResponse
from django.shortcuts import render
# Create your views here.
def user_info(request):
s = '你好'
return HttpResponse(s) #傳回的是字元串的用它
def welcome(request):
username = '易烊千玺'
return render(request,'welcome.html',{'username':username})
#render就是傳回一個網頁
#因為在settings裡面配置了dir 是以能找到這個路徑-welcome.html
def index(request):
return render(request,'index.html')
其中,templates下面的 DIR,是指的是Django尋找HTML的路徑
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
# 'DIRS': [BASE_DIR , '/templates'], #Django自動生成,不好使
'DIRS': [os.path.join(BASE_DIR, 'templates')],
#指的是Django尋找html模闆的目錄
},
]
接着綁定URL與視圖函數。打開urls.py
from django.contrib import admin
from django.urls import path
from zyy import views #導入自己的view
urlpatterns = [
path('admin/', admin.site.urls),
path('hello_world/', views.hello_world), #添加view,前面的hello_world是連結拼接的路徑,這個頁面應為--http://127.0.0.1:8000/hello_world
path('', views.index), #通路路徑不寫,代表通路的根目錄就是它
]
path函數
Django path() 可以接收四個參數,分别為2個必選參數,兩個可選參數
- route: 字元串,表示 URL 規則,與之比對的 URL 會執行對應的第二個參數 view。
- view: 用于執行與正規表達式比對的 URL 請求。
- kwargs: 視圖使用的字典類型的參數。
- name: 用來反向擷取 URL。
Static
static 是在Django 具體APP下建立的static目錄,用來存放靜态資源
在settings裡面設定靜态資源路徑!!注意是一個元祖,要加,
STATIC_URL = '/static/' #原有的
#自己設定的
STATICFILES_DIRS = (
os.path.join(BASE_DIR,'static'),
)
運作Django伺服器報錯 -TypeError: unsupported operand type(s) for /: ‘str‘ and ‘str‘,分析與解決
錯誤類型: TypeError: unsupported operand type(s) for /: ‘str’ and ‘str’
出錯代碼: 如上圖綠框所示,在settings.py中的’DIRS’: [BASE_DIR / ‘templates’]
錯誤分析: 這個提示大概是說:“類型錯誤:不支援操作類型為字元串和字元串”,直接把兩個字元串(BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(file)))在前面定以為基礎路徑,也就是整個項目的路徑)在清單中連接配接起來是不合适的,這裡系統将“/”了解為了除号,系統了解為“字元串/字元串”。實際上這裡想表達的意思将BASE_DIR 和’templates’連在一起形成一個完整路徑,而“/”是路徑分隔符。
修改方法: ‘DIRS’: [str.format(BASE_DIR, ‘/templates’)],再次運作就成功了。
實際上,我所使用的是:‘DIRS’: [os.path.join(BASE_DIR, ‘templates’)], # 指的是Django尋找html模闆的目錄
這個bug的 原文連結:https://blog.csdn.net/u010021014/article/details/110449782