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