Django框架
1.Django框架
版本:1.11
創建:
django-admin startproject xxx
cd xxx
python manage.py startapp app01
python manage.py runserver 127.0.0.1:8000
2.HTTP請求本質
1.請求生命周期
- 網站本質:socket
服務端(網站):
1.先啟動並監聽:80端口
3.獲取請求信息:
獲取請求中的url
根據url在已經寫好的路由關系中進行匹配:
{
/login/ login
/admin/ admin
}
請求頭
請求體
處理請求
響應內容:
客戶端(瀏覽器)
http://cnblogs.com/wangmengzhu/
2.發送請求
- 連接:www.cnblogs.com:80
- 發送數據:
GET請求:請求體為空,傳值在url後邊?data
POST請求:通過post可以傳值
3.接收響應內容
響應頭悄悄寫到瀏覽器
響應體在瀏覽器上顯示
3.Django請求的生命周期
瀏覽器---wsgi協議---路由系統---視圖函數---ORM
4.bootstrap實現用戶登陸
5.基於Django的model操作數據庫表
- 創建用戶表
models.py
class UserInfo(models.Model): id=models.AutoField(primary_key=True) user=models.CharField(max_length=32) pwd=models.CharField(max_length=64)
settings.py
INSTALLED_APPS = [
‘django.contrib.admin‘,
‘django.contrib.auth‘,
‘django.contrib.contenttypes‘,
‘django.contrib.sessions‘,
‘django.contrib.messages‘,
‘django.contrib.staticfiles‘,
‘app01.apps.App01Config‘,#‘app01‘
]
SQLlite:
應用默認操作
- 執行命令,創建數據庫表
python manage.py makemigrations
python manage.py migrate
#與數據庫的類型一一對應 class UserInfo(models.Model): id=models.AutoField(primary_key=True) user=models.CharField(max_length=32,null=False,default=‘11‘) pwd=models.CharField(max_length=64) class Department(models.Model): id=models.AutoField(primary_key=True) title=models.CharField(max_length=32)
- 基於model實現數據查詢和用戶登陸
def login(request): if request.method==‘GET‘: #打開login.html文件 #找到特殊標記{{msg}} #並將第三個特殊標識符替換 #將替換完畢的字符串發送給用戶瀏覽器 return render(request,‘login.html‘,{‘msg‘:‘sajlsa‘}) else: username=request.POST.get(‘username‘) password=request.POST.get(‘password‘) from app01 import models user=models.UserInfo.objects.filter(user=username,pwd=password).first()#表示查詢這張表的所有數據 if user: #在響應頭中設置:locating:http://baidu.com無響應體,當作字符串提交給瀏覽器 return redirect(‘/index/‘) else: return render(request,‘login.html‘,{‘msg‘:‘用戶名或者密碼錯誤‘}) def index(request): return redirect(‘http://www.baidu.com/‘) def test(request): from app01 import models # user_list=models.UserInfo.objects.all() # for obj in user_list: # #查詢所有用戶,相當於select * from userinfo # #每一個obj都是一行數據 # print(obj.id) #select * from userinfo where user=‘alex‘ and pwd=123 #如果取到多條就是列表,裏邊有多個對象,取到一條,就是列表,裏邊有一個對象 user_list=models.UserInfo.objects.filter(user=‘alex‘,pwd=‘123‘).all() #根據條件取數據庫中的第一條數據 user_list=models.UserInfo.objects.filter(user=‘alex‘,pwd=‘123‘).first() return HttpResponse(‘...‘)
- 查看部門列表
- 添加部門
views.py def part_add(request): """ 添加部門 :param request: :return: """ if request.method==‘GET‘: return render(request,‘part_add.html‘) else: ti=request.POST.get(‘title‘) #添加到數據庫:models.Department models.Department.objects.create(title=ti) return redirect(‘/parts/‘) parts_add.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <link rel="stylesheet" href="/static/plugins/bootstrap/css/bootstrap.css"> </head> <body> <div class="container"> <form method="post"> <div class="form-group"> <h1>添加部門</h1> <label for="t1">部門名稱</label> <input id=‘t1‘ type="text" class="form-control" name="title"> </div> <input type="‘submit" value="添加" class="btn btn-success"> <button type="submit" class="btn btn-default">Submit</button> </form> </div> </body> </html>
- 刪除部門
vewis.py def part_del(request): """ 刪除部門 :param request: :return: """ nid=request.GET.get(‘nid‘) #去數據庫中將id=nid刪除 models.Department.objects.filter(id=nid).delete() return redirect(‘/parts/‘)
- 編輯部門
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div class="container">
<h1>編輯部門</h1>
<form method="post">
<div class="form-group">
<span><label for="t1">部門名稱</label></span>
<input id=‘t1‘ type="text" class="form-control" name="title" value="{{ val }}">
</div>
<button type="submit" class="btn btn-default">修改</button>
</form>
</div>
</body>
</html>
Django框架