一、创建项目
1、在cmd中相应位置:输入django-admin startproject 项目名字
就开启了一个django项目。
2、项目文件作用
①、settings配置文件
②、urls路由系统,页面调用和函数
③、init初始化
④、wsgi
3、
from django.contrib import admin
from django.urls import path
from django.shortcuts import HttpResponse,render,redirect
def login(request):
# return HttpResponse('<input type="text" />')#只能加字符串
#自动找到模板路径下的login.html文件,读取内容返回给用户。
# print(request.method)#返回请求类型
if request.method == "GET":
return render(request,'login.html')#获取网页信息,变量都为request
else:
u=request.POST.get('user')
p=request.POST.get('pwd')
if u =="root" and p =="123":
return redirect('http://www.baidu.com')#跳转网页
else:
return render(request, 'login.html') # 获取网页信息,变量都为request
urlpatterns = [
# path('admin/', admin.site.urls),
path('login/', login), # 后缀的名字,调用的函数,后返回的页面。
]
。。。。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>用户登录页面</title>
<link rel="stylesheet" href="/static/commons.css">
</head>
<body>
<h1>用户登录</h1>
<form method="post" action="/login/">
用户名:<input type="text" name="user"/>
密码<input type="password" name="pwd"/>
<input type="submit" value="登录">
</form>
</body>
</html>
name=""中对应的输入值会以字典的形式传到页面,但没有接收。
4、GET和POST
request.POST获取POST提交的数据(表单提交数据)
request.GET获取GET提交的数据(在url传递的数据)
返回数据:
①、return HttpReasponse()返回字符串
②、return render()渲染之后,返回页面
③、return redirect()跳转到某个网站
{{msg}}在html中
return render( ,{“msg”:“返回的东西”})
注:以POST方式传值时,在GET中也会获得相应的值。
以GET传值时,只有GET中有值。
POST在请求体中拿的值
GET在请求头的url中拿的值
5、模板中的特殊标记
login.html
{{name}}
return render(,{“name”:“值”})
6、获取数据到html中
return render(request,'index.html',{
'name':"root",
'users':["董云鹏","汤普森"],
'password':{"3131":"44252"},
'user_list_dicr':[
{"id":1,"name":"alex"},
{"id":2,"name":"tom"},
{"id":3,"name":"kevin"},]
html中获取的方法
<body>
<h1>{{ name }}</h1>
<p>{{ users.0 }}</p>
<p>{{ users.1 }}</p>
<p>{{ password.3131 }}</p>
<h3>循环</h3>
<table>
{% for i in users %}
<tr>
<td> {{ i }}</td>
</tr>
{% endfor %}
</table>
<table border="1">
{% for item in user_list_dicr %}
<tr>
<td>{{ item.id }}</td>
<td>{{ item.name }}</td>
</tr>
{% endfor %}
</table>
</body>
对数据库的操作:
增
删
改
查
表(一对一、一对多、多对多)
学员管理系统
id name 班级
def classes(request):
#连接数据库
conn = pymysql.connect(host = 'localhost',port=3306,user='root',passwd='123',db='test', charset='utf8')
#创建游标
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
#游标中的SQL语句
cursor.execute("select id,title from class")
#获取信息,并拿到
class_list = cursor.fetchall()
#关闭游标
cursor.close()
#关闭数据库
conn.close()
#渲染到前端页面
return render(request,'classes.html',{"class_lst":class_list})
前端页面获取信息的代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>班级列表</title>
</head>
<body>
<h1>班级列表</h1>
<a href="/add_class">添加</a>
<table>
<thead>
<tr>
<th>ID</th>
<th>班级列表</th>
</tr>
</thead>
<tbody>
{% for row in class_lst %}
<tr>
<td>{{ row.id }}</td>
<td>{{ row.title }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</body>
</html>
数据库插入的操作;
def add_class(request):
if request.method =="GET":#如果发送get请求,返回到添加班级的界面
return render(request,'add_class.html')
else:
t=request.POST.get('title')#如果是post请求,把数据获取,插入到数据库。并返回到班级页面。
conn=pymysql.connect(host="localhost",port=3306,user="root",password="123",db="test",charset="utf8")
cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)
cursor.execute("insert into class(title)values(%s)",[t,])
conn.commit()
cursor.close()
conn.close()
return redirect('/classes/')
页面接受的代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>添加班级</title>
</head>
<body>
<h1>添加班级</h1>
<form method="post" action="/add_class/">
<p>
班级名称:<input type="text" name="title">
<input type="submit" value="提交">
</p>
</form>
</body>
</html>
数据库删除操作:
def del_class(request):
nid =request.GET.get('nid')
conn = pymysql.connect(host="localhost", port=3306, user="root", password="123", db="test", charset="utf8")
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
cursor.execute("delete from class where id=%s",[nid,])
conn.commit()
cursor.close()
conn.close()
return redirect('/classes/')
编辑操作:
def edit_class(request):
if request.method == "GET":
nid = request.GET.get('nid')
conn = pymysql.connect(host="localhost", port=3306, user="root", password="123", db="test", charset="utf8")
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
cursor.execute("select id ,title from class where id=%s",[nid,])
result = cursor.fetchone()
cursor.close()
conn.close()
return render(request,'edit_class.html',{'result':result})
else:
nid=request.GET.get('nid')
title = request.POST.get('title')
conn = pymysql.connect(host="localhost", port=3306, user="root", password="123", db="test", charset="utf8")
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
cursor.execute("update class set title = %s where id= %s",[title,nid])
conn.commit()
cursor.close()
conn.close()
print(nid,title)
return redirect('/classes/')
编辑页面:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>编辑班级信息</title>
</head>
<body>
<h1>编辑班级信息</h1>
<form method="POST" action="/edit_class/?nid={{ result.id }}">
<p>班级名称:<input type="text" name="title" value="{{ result.title }}"/></p>
<input type="submit" value="提交"/>
</form>
</body>
</html>