目录
可视化界面之数据增删改查
项目初始化步骤
1.创建django项目,创建模板和静态目录,创建app
django-admin startproject djangoday03
cd djangoday03
mkdir templates
mkdir static
python38 manage.py startapp app01
2.pycharm打开新创建的djangoday03项目
3.修改templates路径(settings.py)
'DIRS': [os.path.join(BASE_DIR,'templates')],
4.注册app01(settings.py)
INSTALLED_APPS = [
'app01',
]
5.修改数据库为mysql(settings.py)
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'day51',
'HOST':'127.0.0.1',
'PORT':3306,
'USER':'root',
'PASSWORD':'Abcd1234',
'CHARSET':'utf8',
}
}
6.添加静态路径支持(settings.py)
STATICFILES_DIRS = [os.path.join(BASE_DIR,'static'),
]
7.post发送请求会报错注释其中的一行(settings.py)
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
# 'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
8.ORM数据模型准备(app01里面的models.py)
class User2(models.Model):
# 主键字段可以不写 ORM会自动帮你创建一个id的主键字段
name = models.CharField(max_length=32,verbose_name='用户名')
age = models.IntegerField(verbose_name='年龄')
# 便于对象打印之后的查看 不影响数据库 所以不需要执行迁移命令
def __str__(self):
return '用户对象:%s' % self.name
9.启动django服务
python38 manage.py runserver
10.执行数据库迁移相关命令(操作前确保没有相关表)
python38 manage.py makemigrations 将操作记录到小本本上(migrations)
python38 manage.py migrate 将操作同步到数据库上
11.对User2表填充相关数据
#登录数据库客户端day51库下进行操作,模拟数据
insert into app01_user2(name,age) values('jason',18),('tony',19),('winter',23),('jerry',28),('oscar',32);
访问用户数据的接口
1.添加路由及对应的功能函数(urls.py)
from app01 import views
# 访问用户数据的接口
path('user_list/',views.user_list_func),
2.编辑视图层,添加后端功能(view.py)
from django.shortcuts import render,HttpResponse,redirect
from app01 import models
# Create your views here.
def user_list_func(request):
# 1.获取user2表中所有的数据展示到html页面上
user_data = models.User2.objects.filter() # 括号内不填筛选条件等价于查看所有 QuerSet [对象1,对象2,对象3...]
# 2.利用模板语法传递数据到html页面并完成处理最终返回给浏览器展示
return render(request,'userListPage.html',{'user_data':user_data})
3.准备对应的userListPage.html文件
1.拷贝bootstrap-3.4.1-dist本地静态资源到static目录下
2.编写userListPage.html文件(templates目录)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.1/jquery.js"></script>
{% load static %}
<link rel="stylesheet" href="{% static 'bootstrap-3.4.1-dist/css/bootstrap.css' %}">
<script src="{% static 'bootstrap-3.4.1-dist/js/bootstrap.js' %}"></script>
</head>
<body>
<div class="container">
<div class="row">
<h1 class="text-center">数据展示页</h1>
<div class="col-md-8 col-md-offset-2">
<table class="table table-hover table-striped">
<thead>
<tr>
<th>Id</th>
<th>Name</th>
<th>Age</th>
<th class="text-center">Operation</th>
</tr>
</thead>
<tbody>
{% for user_obj in user_data %}
<tr>
<td>{{ user_obj.pk }}</td>
<td>{{ user_obj.name }}</td>
<td>{{ user_obj.age }}</td>
<td class="text-center">
<a href="#" class="btn btn-primary btn-xs">编辑</a>
<a href="#" class="btn btn-danger btn-xs delete">删除</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
</div>
</body>
</html>
4.浏览器打开访问
http://127.0.0.1:8000/user_list/
数据添加
1.添加路由层(urls.py)
# 添加用户数据的接口
path('user_add/',views.user_add_func),
2.编辑视图层,添加后端功能(view.py)
def user_add_func(request):
#1.先返回一个获取新增用户数据的html页面
return render(request,'userAddPage.html')
3.创建对应userAddPage.html文件(templates目录)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.1/jquery.js"></script>
{% load static %}
<link rel="stylesheet" href="{% static 'bootstrap-3.4.1-dist/css/bootstrap.css' %}">
<script src="{% static 'bootstrap-3.4.1-dist/js/bootstrap.js' %}"></script>
</head>
<body>
<div class="container">
<div class="row">
<h1 class="text-center">数据添加页</h1>
<div class="col-md-6 col-md-offset-3">
<form action="" method="post">
<p>name:
<input type="text" name="name" class="form-control">
</p>
<p>age:
<input type="text" name="age" class="form-control">
</p>
<input type="submit" value="添加用户" class="btn btn-warning btn-block">
</form>
</div>
</div>
</div>
</body>
</html>
4.数据展示页面要添加一个数据添加入口(userListPage.html)
<h1 class="text-center">数据展示页</h1>
<div class="col-md-8 col-md-offset-2">
<a href="/user_add/" class="btn btn-success">数据添加</a> /添加这行/
5.再次编辑后端逻辑接口(views.py)
def user_add_func(request):
#2.根据不同的请求方式做不同的处理
if request.method == 'POST':
#3.获取用户相关数据
name_data = request.POST.get('name')
age_data = request.POST.get('age')
#4.继续一些小的判断
if len(name_data) == 0 or len(age_data) ==0:
return HttpResponse('用户名或年龄不能为空')
user_data=models.User2.objects.filter(name=name_data)
if user_data:
return HttpResponse('用户名已存在')
models.User2.objects.create(name=name_data,age=age_data)
# 5.重定向到数据展示页
return redirect('/user_list/')
#1.先返回一个获取新增用户数据的html页面
return render(request,'userAddPage.html')
django请求生命周期流程图
django路由层
反向解析
标签:name,py,django,html,反向,user,data,路由
From: https://www.cnblogs.com/winter-yu1989/p/16976722.html