数据的查询,新增,删除,编辑
需求:
1.查看当前所有表数据(前端展示) /home/
2.书写用户注册页面(前端展示) /register/
3.编辑用户数据
4.删除用户
前期准备
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', ] DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME':"db123", "HOST":'127.0.0.1', "PORT":3306, "USER":'root', "PASSWORD":'123', "CHARSET":"utf8" } } STATIC_URL = '/static/' STATICFILES_DIRS = [ os.path.join(BASE_DIR,'static') ]
models.py
from django.db import models # Create your models here. class User(models.Model): id = models.AutoField(verbose_name="编号",primary_key=True) name = models.CharField(verbose_name="姓名",max_length=32) password = models.IntegerField(verbose_name="密码") def __str__(self): return self.name
urls:
from django.shortcuts import render,HttpResponse,redirect
from app01 import models
# Create your views here.
def home(request):
# 1.查询user表中所有的数据
user_data = models.User.objects.all() # queryset [数据对象,数据对象,数据对象]
# 2.将数据利用模板语法传递给html文件
return render(request,'home.html',locals()) # {'user_data':user_data}
def register(request):
if request.method == 'POST':
username = request.POST.get('username')
password = request.POST.get('password')
# 先比对用户名是否重复
is_exists = models.User.objects.filter(name=username) # queryset[]
if is_exists:
return HttpResponse("用户名已存在")
# 将用户数据写入数据库
models.User.objects.create(name=username,password=password)
# 返回数据展示
return redirect('/home/')
return render(request,'register.html')
def data_delete(request):
# 获取用户需要删除的数据主键值
delete_id = request.GET.get('delete_id')
# 利用orm删除即可
models.User.objects.filter(id=delete_id).delete()
# 再次返回数据展示页
return redirect('/home/')
def data_edit(request):
# 1.获取用户需要修改的数据主键值
edit_id = request.GET.get('edit_id')
if request.method == 'POST':
username = request.POST.get('username')
password = request.POST.get('password')
# 修改表数据
models.User.objects.filter(id=edit_id).update(name=username,password=password)
# 返回展示页
return redirect('/home/')
# 2.根据主键值查询具体数据
edit_obj = models.User.objects.filter(id=edit_id).first() # queryset[数据对象]
'''filter的结果是一个queryset可以看成是列表套数据对象 在取值的时候可以用索引 但是推荐使用first方法'''
# 3.返回给用户一个编辑页面 上面提前写好了用户需要编辑的数据
return render(request,'edit_data.html',locals())
home.html
"en"> "UTF-8">Title {% load static %} "stylesheet" href="{% static 'bootstrap-3.4.1-dist/css/bootstrap.min.css' %}">class="container">class="row">class="text-center">数据展示
class="col-md-8 col-md-offset-2"> "/register" class="btn btn-primary">用户注册 class="table table-striped table-hover"> {% for user_obj in user_data %} {% endfor %}
id name password others {{ user_obj.id }} {{ user_obj.name }} {{ user_obj.password }} "/data_edit/?edit_id={{ user_obj.id }}" class="btn btn-primary btn-xs">编辑 "/data_delete/?delete_id={{ user_obj.id }}" class="'btn btn-danger btn-xs">删除
register.html
"en"> "UTF-8">Title {% load static %} "stylesheet" href="{% static 'bootstrap-3.4.1-dist/css/bootstrap.min.css' %}">class="container">class="row">class="text-center">用户注册
class="col-md-8 col-md-offset-2">
edit_data.html
"en"> "UTF-8">Title {% load static %} "stylesheet" href="{% static 'bootstrap-3.4.1-dist/css/bootstrap.min.css' %}">class="container">class="row">class="text-center">编辑用户
class="col-md-8 col-md-offset-2">