django2.0.7 + mysql 5.5
步骤1:安装模块
>> pip install mysqlclient==1.3.12
在mysql创建数据库‘db_django’
步骤2:在django项目中配置数据库连接信息
'default': {
'ENGINE': 'django.db.backends.mysql',
#数据库名(需要提前创建)
'NAME': 'db_django',
#用户名
'USER':'root',
# 密码
'PASSWORD':'root',
#url 服务器地址
'HOST':'localhost',
#端口号
'PORT':3306,
}
步骤三:更新应用数据库
>>python manage.py makemigrations
>>python manage.py migrate
步骤四:自定义数据表
方法遵循model生成规则
from django.shortcuts import render
from app.models import Bumen,Emp
from django.http import HttpResponseRedirect
from django.core.paginator import EmptyPage, PageNotAnInteger, Paginator
# Create your views here.
def index(request):
return render(request,'index.html')
def show(request):
ref=Bumen.objects.all()
content={}
content['deptlist']=ref
return render(request,'bumen.html',content)
def app(request):
if request.POST:
name = request.POST.get('names')
jianjie = request.POST.get('jianjie')
Bumen.objects.create(dname=name,djianjie=jianjie)
print('添加成功')
return HttpResponseRedirect('/show/')
else:
return render(request,'app.html')
def shanchu(request,deptno):
#Bumen.objects.filter(deptno=deptno).delete()
Bumen.objects.get(deptno=deptno).delete()
return HttpResponseRedirect('/show/')
page=1
def xiugai(request,deptno):
if request.POST:
name=request.POST.get('names')
jianjie=request.POST.get('jianjie')
Bumen.objects.filter(deptno=deptno).update(dname=name,djianjie=jianjie)
return HttpResponseRedirect('/show/')
else:
print(deptno)
bumen=Bumen.objects.get(deptno=deptno)
print(bumen)
content={}
content['xiu']=bumen
return render(request,'xiugai.html',content)
def empshow(request):
ref=Emp.objects.all()
p=Paginator(ref,2)
global page
page=request.GET.get('page')
try:
ref=p.page(page)
except EmptyPage:
ref=p.page(1)
except PageNotAnInteger:
ref=p.page(p.num_pages)
contont={}
contont['emplist']=ref
return render(request,'empshow.html',contont)
def addemp(request):
if request.POST:
ename=request.POST.get('ename')
job=request.POST.get('job')
hiredata=request.POST.get('hiredata')
sal=int(request.POST.get('sal'))
comm=float(request.POST.get('comm'))
deptno=int(request.POST.get('deptno'))
dept=Bumen.objects.get(deptno=deptno)
Emp.objects.create(ename=ename,job=job,hiredata=hiredata,sal=sal,comm=comm,dept=dept)
return HttpResponseRedirect('/empshow/')
else:
depinfo=Bumen.objects.all()
content={}
content['deptinfo']=depinfo
return render(request,'empapp.html',content)
def empshanchu(request,dd):
Emp.objects.get(empno=dd).delete()
return HttpResponseRedirect('/empshow/')
def empupdata(request,dd):
if request.POST:
ename=request.POST.get('ename')
job=request.POST.get('job')
hiredata=request.POST.get('hiredata')
sal=int(request.POST.get('sal'))
comm=float(request.POST.get('comm'))
deptno=int(request.POST.get('deptno'))
dept=Bumen.objects.get(deptno=deptno)
print(ename,job,hiredata,sal,comm,deptno,dept)
Emp.objects.filter(empno=dd).update(ename=ename,job=job,hiredata=hiredata,sal=sal,comm=comm,dept=dept)
return HttpResponseRedirect('/empshow/?page={0}'.format(page))
else:
emp=Emp.objects.get(empno=dd)
dept=Bumen.objects.all()
content={}
content['emp']=emp
content['dept']=dept
return render(request,'empxiugai.html',content)
***********************************************************************
from django.db import models
# Create your models here.
class Bumen(models.Model):
deptno=models.AutoField(primary_key=True)
dname=models.CharField(max_length=30)
djianjie = models.CharField(max_length=50)
class Emp(models.Model):
empno=models.AutoField(primary_key=True)
ename=models.CharField(max_length=30)
job=models.CharField(max_length=30)
hiredata=models.DateTimeField()
sal=models.IntegerField()
comm=models.FloatField()
dept=models.ForeignKey('Bumen',on_delete=models.CASCADE)
***********************************************************************
from django.urls import path
from app.views import show,index,app,shanchu,xiugai
from app.views import empshow,addemp,empshanchu,empupdata
urlpatterns = [
path('admin/', admin.site.urls),
path('index/', index),
path('show/', show),
path('app/', app),
path('shanchu/<str:deptno>/', shanchu),
path('xiugai/<str:deptno>/', xiugai),
#emp
path('empshow/',empshow),
path('addemp/',addemp),
path('empshanchu/<str:dd>/', empshanchu),
path('empupdata/<str:dd>/', empupdata),
]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h2><a href="/show/">部门管理</a></h2>
<br>
<h2><a href="/empshow/?page=1">员工管理</a></h2>
</body>
</html>
*****************************************************
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h2>添加员工信息</h2>
<form method="post" action="/addemp/">
{% csrf_token %}
员工姓名:<input type="text" name="ename" placeholder="请输入姓名"><br>
员工职位:<input type="radio" name="job" value="经理">经理<input type="radio" name="job" value="员工">员工<br>
入职日期:<input type="datetime-local" name="hiredata"><br>
基本工资:<input type="text" name="sal" placeholder="请输入工资"><br>
绩效奖金:<input type="text" name="comm" placeholder="请输入绩效"><br>
<select name="deptno">
{% for d in deptinfo %}
<option value="{{ d.deptno }}">{{ d.dname }}</option>
{% endfor %}
</select>
<input type="submit" value="添加员工">
</form>
</body>
</html>
*************************************************************
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
{% load static %}
<link rel="stylesheet" href="{% static 'style.css' %}">
</head>
<body >
<table border="1px" width="800px" bgcolor="#f0f8ff">
<tr>
<td>员工编号</td>
<td>员工姓名</td>
<td>员工职位</td>
<td>入职日期</td>
<td>员工工资</td>
<td>员工奖金</td>
<td>员工部门</td>
<td>操作</td>
</tr>
{% for ee in emplist %}
<tr>
<td>{{ ee.empno }}</td>
<td>{{ ee.ename }}</td>
<td>{{ ee.job }}</td>
<td>{{ ee.hiredata |date:'Y年m月d日' }}{{ ee.hiredata |date:'H:i' }}</td>
<td>{{ ee.sal }}</td>
<td>{{ ee.comm }}</td>
<td>{{ ee.dept.dname }}</td>
<td><a href="/empupdata/{{ ee.empno }}" class="btn btn-outline-success">修改</a >/<a href="/empshanchu/{{ ee.empno }}" class="btn btn-outline-success">删除</a></td>
</tr>
{% endfor %}
</table>
<form method="get" action="/addemp/">
<button type="submit" class="btn btn-outline-success">添加</button>
</form>
<p>
{% if emplist.has_previous %}
<a href="?page=1">首页</a>
<a href="?page={{ emplist.previous_page_number }}">上一页</a>
{% endif %}
当前页面:{{ emplist.number }}/{{ emplist.paginator.num_pages }}
{% if emplist.has_next %}
<a href="?page={{ emplist.next_page_number }}">下一页</a>
<a href="?page={{ emplist.paginator.num_pages }}">尾页</a>
{% endif %}
</p>
</body>
</html>
*************************************************************
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h2>修改员工信息</h2>
<form method="post" action="/empupdata/{{ emp.empno }}/">
{% csrf_token %}
员工姓名:<input type="text" name="ename" placeholder="请输入姓名" value="{{ emp.ename }}"><br>
员工职位:{% ifequal emp.job '经理' %}
<input type="radio" name="job" value="经理" checked>经理
<input type="radio" name="job" value="员工">员工<br>
{% endifequal %}
{% ifequal emp.job '员工' %}
<input type="radio" name="job" value="经理" >经理
<input type="radio" name="job" value="员工" checked>员工<br>
{% endifequal %}
入职日期:<input type="datetime-local" name="hiredata" value="{{ emp.hiredata |date:'Y-m-d' }}T{{ emp.hiredata |date:'H:i' }}"><br>
基本工资:<input type="text" name="sal" placeholder="请输入工资" value="{{ emp.sal }}"><br>
绩效奖金:<input type="text" name="comm" placeholder="请输入绩效" value="{{ emp.comm }}"><br>
<select name="deptno">
{% for d in dept %}
{% ifequal d.deptno emp.dept.deptno %}
<option value="{{ d.deptno }}" selected>{{ d.dname }} </option>
{% else %}
<option value="{{ d.deptno }}">{{ d.dname }} </option>
{% endifequal %}
{% endfor %}
</select>
<input type="submit" value="修改员工">
</form>
</body>
</html>
*************************************************************