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>