下載安裝
-
命令行
pip3 install django==1.11.23 -i https://pypi.tuna.tsinghua.edu.cn/simple
-
pycharm
file -- > settings --> Project Interpreter --> + --> 選擇響應的版本下載
創建項目
-
命令行
先建立好本地文件夾,然后再本文件夾下執行 django-admin startproject
項目名稱 -
pycharm
flie ---> new_project ---> django --->項目路徑 --->選解釋器
目錄說明
mysite/
├── manage.py # 管理文件,整個Django項目的啟動文件
└── mysite # 項目目錄
├── __init__.py
├── settings.py # 配置
├── urls.py # 路由 --> URL和函數的對應關系
└── wsgi.py # runserver命令就使用wsgiref模塊做簡單的web server
啟動項目
-
命令行
【注意**】切換到項目根目錄 python manage.py runserver # 127.0.0.1:8000 默認 python manage.py runserver 80 # 127.0.0.1:80 修改端口 python manage.py runserver 0.0.0.0:80 # 0.0.0.0:80 修改IP和端口允許所有主機通過80端口進行訪問
-
pycharm
點綠三角啟動帶有dj標記的項目,不是簡單的右鍵運行文件
三件套
導入 from django.shortcuts import HttpResponse, render, redirect
HttpResponse
內部傳入一個字符串參數,返回給瀏覽器。
def index(request):
# 業務邏輯代碼
return HttpResponse("OK")
render
除request參數外還接受一個待渲染的模板文件和一個保存具體數據的字典參數。
將數據填充進模板文件,最后把結果返回給瀏覽器。
def index(request):
# 業務邏輯代碼
return render(request, "index.html", {"name": "alex", "hobby": ["燙頭", "泡吧"]})
redirect
接受一個URL參數,表示跳轉到指定的URL。
def index(request):
# 業務邏輯代碼
return redirect("/home/")
簡單使用
urls.py寫url 和函數的對應關系 寫函數
from django.shortcuts import HttpResponse, render
def index(request):
return HttpResponse('這里是index') # 返回字符串
def home(request):
return render(request, 'home.html') # 返回html頁面
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^index/', index), # 路徑和函數的對應關系
url(r'^home/', home),
]
靜態文件配置
在項目根目錄存放靜態文件夾,靜態文件夾下可以存放css、js、img等項目中公用的靜態文件或是文件夾。如果不想用 STATICFILES_DIRS 可以不用,都放在 app 里的 static 中也可以。
在settings.py中設置
STATIC_URL = '/static/' # 別名,引入靜態文件時以static開頭,這里的static不是代表的目錄
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static')
]
【舉例】
STATICFILES_DIRS = [ #按照列表的順序進行查找
os.path.join(BASE_DIR, 'x1'),
os.path.join(BASE_DIR, 'static'),
os.path.join(BASE_DIR, 'x2')
]
MIDDLEWARE中間件
如果是提交post請求,注釋掉settings.py下的MIDDLEWARE屬性的csrf中間件 'django.middleware.csrf.CsrfViewMiddleware',用改解決請求時出現403 錯誤
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',
]
TEMPLATES模板路徑設置
在settings.pyTEMPLATES屬性中,設置公用temples路徑,是指到 BASE_DIR/templates文件夾中去取模板
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')] #是指到 BASE_DIR/templates文件夾中去取模板
,
]
后邊接觸到app后,還可以在app中建立templates,是app專用的。
登錄表單設置
form表單
-
action 提交的地址,默認是往本地址提交數據 ;method 請求方法,默認是get,如果是實現認證功能的話,需要手動改成post
-
input 需要有name ,用於提交數據時數據以可知的鍵值對方式傳輸,便於進行數據處理;required=""表示是必填項
-
submit 提交的按鈕或者input
-
前端校驗,在form標簽中使用 novalidate
-
django 中可以在函數中使用request.method從看看瀏覽器提交的請求方式;使用request.POST可以獲取form提交的數據,獲取的是一個字典
-
重定向:從 django.shortcuts中導入redirect ,讓請求的頁面跳轉到其他指定的頁面。 redirect("https://cn.bing.com") 跳轉到指定的網頁; redirect("/home/") 跳轉到本地的頁面,前邊的/必須要寫,不然會加到前邊的地址上;
APP
將urls.py中定義的功能分類存放
新建APP
命令行:
python manage.py startapp app名稱
pycharm中:
tools --> run manage.py task --> startapp app名
注冊APP
在settings中進行注冊
INSTALLED_APPS = [
'app01', # 方法一
'app01.apps.App01Config', # 推薦寫法
]
在urls.py中導入
從app中把函數或者功能導入到urls.py中
from app01 import views
目錄
migrations文件夾存放遷移文件用
admin.py django admin
apps.py app的信息
models.py 模型 model 跟數據庫有關
views.py 寫函數和功能

