views.py
# Create your views here. from django.shortcuts import render, HttpResponse, redirect from app01 import models # 视图函数必须接受一个形参 def ab_render(request): # user_dict = {'username': 'jason', 'age':18} # 第一种传值方式 更加精确,节省资源 # return render(request, '01my.html', {'data':user_dict, 'date':123}) # 第二种方式 当要传输的数特别多的时候 return render(request, '01my.html') def login(request): """ :param request: 请求相关的数据对象,里面有很多简易的方法 :return: """ if request.method == "POST" """ get 只会获取最后一个元素 """ # 获取用户名和密码,然后利用orm操作数据,检验数据是否正确 username = request.POST.get('username') password = request.POST.get('password') # 取数据库中查询数据 from app01 import models user_obj = models.User.objects.filter(username=username).first() if user_obj: # print(type(password)) # print(type(user_obj.password)) if password == user_obj.password: return HttpResponse("登录成功") else: return HttpResponse("密码错误") else: return HttpResponse('用户不存在') return render(request, 'login.html') ''' 静态文件动态解析 {% load static %} <link rel="stylesheet" href="{% static 'bootstrap-3.3.7/dist/css/bootstrap-theme.min.css'%}"> <script src="{% static 'bootstrap-3.3.7/dist/js/bootstrap.min.js'%}"></script> ''' def reg(request): if request.method == 'POST': username = request.POST.get('username') password = request.POST.get('password') # 直接获取用户数据存入数据库 # from app01 import models # 第一种方法 # res = models.User.objects.create(username=username, password=password) # # 返回值就是当前被创建对象本身 # print(res, res.username, res.password) # 第二种方法 user_obj = models.User(username=username, password=password) user_obj.save() return render(request, 'reg.html') def userlist(request): # 查询出用户表中所有的数据 # 方式一 # data = models.User.objects.filter() # print(data) # 方式2 user_queryset = models.User.objects.all() return render(request, 'userlist.html', locals()) def edit_user(request): # 获取url问好后面的参数 edit_id = request.GET.get('user_id') # 查询当前用户想要编辑的数据对象 # 查询当前用户想要编辑的数据对象 edit_obj = models.User.objects.filter(id=edit_id).first() if request.method == 'POST': username = request.POST.get('username') password = request.POST.get('password') # 去数据库中修改对应的数据内容 # 修改数据方式一 # models.User.objects.filter(id=edit_id).update(username=username, password=password) ''' 将filter查询出来的列表中所有的对象全部更新 批量更新操作 只修改被修改的字段 ''' # 修改数据方式2 edit_obj.username = username edit_obj.password = password edit_obj.save() ''' 当字段的别多的时候效率会非常低 从头将所有的数据的所有字段全部更新一边,无论该字段是否被被修改 ''' # 跳转到数据展示的页面 return redirect('/userlist/') return render(request, 'edit_user.html', locals()) def delete_user(request): delete_id = request.GET.get('user_id') models.User.objects.filter(id=delete_id).delete() # 批量删除 # 跳转到展示页面 ''' 真正的删除数据需要二次确认 删除数据内部其实并不是真正的删除数据,我们会给数据添加一个标识字段用来表示,当前数据是否,被删除了,如果数据被删除了,仅仅是给这个字段修改了一个状态 username password is_delete jasdon 123 0 liu 123 1 ''' return redirect('/userlist/')
url.py
```python from django.conf.urls import url from django.contrib import admin from app01 import views urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^ab_render/', views.ab_render), # 登录功能 url(r'^login/', views.login), # 注册功能 url(r'^register/', views.reg), # 展示 url(r'^userlist/', views.userlist), # 编辑 url(r'^edit_user', views.edit_user), # 删除用户 url(r'^delete_user', views.delete_user) ]
models.py
from django.db import models # Create your models here. class User(models.Model): id = models.AutoField(primary_key=True, verbose_name='id') username = models.CharField(max_length=32,verbose_name='用户名') password = models.CharField(verbose_name='密码', max_length=64) def __str__(self): return '%s'%self.username