python Django(三)
Django单表操作-SQLite3
1、创建应用
1.1、添加应用
py manage.py startapp studentmanager
1.2、修改配置
修改settings.py文件的INSTALLED_APPS配置项
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'studentmanager', # 注册自己的应用
]
2、生成数据表
2.1、创建模型
class StudentInfo(models.Model):
# id = models.AutoField(primary_key=True) # id 会自动创建,可以手动写入
name = models.CharField(max_length=30) # 字符串
sex = models.CharField(max_length=2) # 性别
birth = models.DateField() # 日期类型
2.2、生成迁移文件
根据模型类型生成sql语句。
py manage.py makemigrations
生成的迁移文件就在migrations文件夹下
operations = [
migrations.CreateModel(
name='StudentInfo',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=30)),
('sex', models.CharField(max_length=2)),
('birth', models.DateField()),
],
),
]
使用的数据库settings文件中默认是sqlite3,项目中出现文件db.sqlite3
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
这里使用的是社区版的pycharm,查看sqlite3数据库,需要借助插件Database Navigator
2.3、执行迁移
执行sql语句生成数据表。
py manage.py migrate
查看生成的表
![](https://img.haomeiwen.com/i23119690/280b644dfdc58621.png)
3、数据操作
配置应用路由
from django.contrib import admin
from django.urls import path
from django.conf.urls import url,include
urlpatterns = [
path('admin/', admin.site.urls),
path('stu/',include('studentmanager.urls')), # 配置studentmanager的urls
]
在应用下创建urls.py并配置增删改查路由
from django.conf.urls import url
from django.urls import path
from studentmanager import views
urlpatterns = [
# 通过url设置url路由配置项
# path('index',views.index),
path('list', views.index), # 显示所有
path('save', views.save), # 添加
path('delete', views.delete), # 删除
path('update', views.update) # 修改
]
3.1、添加数据
视图函数
# 添加学生视图函数
@csrf_exempt
def save(request):
if request.method == 'POST':
name = request.POST.get('name')
sex = request.POST.get('sex')
birth = request.POST.get('birth')
stu = StudentInfo(
name = name,
sex = sex,
birth = birth
)
stu.save()
return index(request)
3.2、修改数据
# 修改学生信息
def update(request):
if request.method == "POST":
name = request.POST.get('username')
gender = request.POST.get("gender")
age = int(request.POST.get("age"))
score = int(request.POST.get("score"))
id = int(request.POST.get("id"))
stu = StudentInfo.objects.get(id=id)
stu.name = name
stu.age = age
stu.gender = gender
stu.score = score
stu.save()
return index(request)
3.3、删除数据
def delete(request):
if request.method == 'GET':
id = request.GET.get('id')
stu = StudentInfo.objects.filter(id = id)
stu.delete()
return index(request)
3.4、简单查询数据
# 显示学生信息视图函数
def index(request):
stus = StudentInfo.objects.all()
return render(request,'studentmanager/stus.html',{'data':stus})
3.5、页面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>学生管理</title>
</head>
<body>
<div>
<form action="/stu/save" method="Post">
<input type="hidden" name="csrfmiddlewaretoken" value="{% csrf_token %}"/>
<input type="text" name="name" placeholder="用户名"/>
<input type="text" name="sex" placeholder="性别"/>
<input type="text" name="birth" placeholder="生日"/>
<input type="submit" value="添加" />
</form>
</div>
<div>
<table>
{% for row in data %}
<tr>
<td>{{ row.name }}</td>
<td>{{ row.sex }}</td>
<td>{{ row.birth }}</td>
<td>
<a href="/stu/delete?id={{row.id}}">删除</a>
<a href="/stu/update?id={{row.id}}">修改</a>
</td>
</tr>
{% endfor %}
</table>
</div>
</body>
</html>
网友评论