1.新建项目
2.创建app
startapp app01
3.设计表结构
4.在MySQL中生成表
4.1新建数据库
4.2修改配置文件
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'test5',
'USER':'root',
'PASSWORD':'root',
'HOST':'127.0.0.1',
'POST':3306,
}
}
4.3Django命令生成数据库表
makemigration migrate
5.静态文件的管理
6.部门管理
7.模板的继承
-
部门列表
-
添加部门
-
编辑部门
定义母版:(可以多定义几个block,取不同名字即可)
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>标题</h1>
<div>
{% block content%}{% endblock %}
</div>
<h1>底部</h1>
</body>
</html>
继承母版:
{% extends 'layout.html' %}
{% block content %}
<h1>首页</h1>
{% endblock %}
8.用户管理
8.1 初识Form
1.view
2.user_add.html
8.2 ModelForm(推荐)
1.models
# Create your models here.
class Department(models.Model):
""""部门表"""
title=models.CharField(verbose_name='标题',max_length=32)
def __str__(self):
return self.title
2.views
######################### Model Form ################################
from django import forms
class UserModelForm(forms.ModelForm):
name=forms.CharField(min_length=2,label="用户名")
class Meta:
model = models.UserInfo
fields = ["name", "password", "age", "account","create_time", "gender", "depart"]
# widgets={
# 'name':forms.TextInput(attrs={"class":"form-control"})
# }
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# 循环找到所有的插件,添加class=“form——control”
for name, field in self.fields.items():
# if name=="password":
# continue
field.widget.attrs = {"class": "form-control"}
def user_model_form_add(request):
"""添加用户(Model Form版本)"""
if request.method=="GET":
form = UserModelForm()
return render(request, 'user_model_form_add.html', {'form': form})
#用户POST提交数据,数据校验
form=UserModelForm(data=request.POST)
if form.is_valid():
# 如果数据合法,保存到数据库中
# print(form.cleaned_data)
form.save()
return redirect('/user/list/')
#校验失败(在页面上显示错误信息)
return render(request, 'user_model_form_add.html', {'form': form})
3.user_add.html
<form method="post" novalidate>
{% csrf_token %}
{% for field in form %}
<div class="form-group">
<label>{{ field.label }}</label>
{{ field }}
<span style="color: red;">{{ field.errors.0}}</span>
</div>
{% endfor %}
8.3编辑用户
-
点击编辑,跳转到编辑页面(将编辑行的ID携带过去)
-
编辑页面(默认数据,根据ID获取并设置到页面中)
-
提交:
-
错误提示
-
数据校验
-
在数据库中更新
-
def user_edit(request,nid):
""""编辑用户"""
if request.method=="GET":
# 根据ID去数据库获取要编辑的那一行数据(对象)
row_object = models.UserInfo.objects.filter(id=nid).first()
form = UserModelForm(instance=row_object)
return render(request, 'user_edit.html', {'form': form})
row_object=models.UserInfo.objects.filter(id=nid).first()
form = UserModelForm(data=request.POST,instance=row_object)
if form.is_valid():
form.save()
return redirect('/user/list/')
return render(requests, 'user_edit.html', {'form': form})
8.4删除用户
def user_delete(request,nid):
models.UserInfo.objects.filter(id=nid).delete()
return redirect('/user/list/')