url:

# member 处理
re_path('member/list/', member.list, name='member/list/'),
re_path('member/list_part/', member.list_part, name='member/list_part/'),
re_path('member/add/', member.add, name='member/add/'),
re_path('member/delete/', member.delete, name='member/delete/'),
re_path('member/change/', member.change, name='member/change/'),

views:

from django.shortcuts import HttpResponse,redirect,render
from app01.models import *
import json # 使用json格式数据
from django.core.paginator import Paginator,EmptyPage,PageNotAnInteger
import re
from back.views.ddff import defense_url,ddff_list @defense_url
def add(request,aid=None,**kwargs):
'''管理员添加'''
res = {'s':None,'info':None}
# 提交
print(request.POST)
if request.method == 'POST':
# 名字
if request.POST.get('member_name') == '':
res['info'] = '名字不能为空'
return HttpResponse(json.dumps(res))
member_name = request.POST.get('member_name').strip() # 手机号
if request.POST.get('member_tel') == '':
res['info'] = '手机号不能为空'
return HttpResponse(json.dumps(res))
member_tel = request.POST.get('member_tel').strip() # 手机号格式
if re.match('^[0-9]+$', member_tel) is None:
res['info'] = '手机号格式不正确'
return HttpResponse(json.dumps(res)) # Email
if request.POST.get('member_email') == '':
res['info'] = 'Email不能为空'
return HttpResponse(json.dumps(res))
member_email = request.POST.get('member_email').strip() # Email格式
if re.match('^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$', member_email) is None:
res['info'] = 'Email格式不正确'
return HttpResponse(json.dumps(res)) # 昵称
if request.POST.get('member_nickname') == '':
res['info'] = '昵称不能为空'
return HttpResponse(json.dumps(res))
member_nickname = request.POST.get('member_nickname').strip() # 密码
if request.POST.get('pwd') == '':
res['info'] = '密码不能为空'
return HttpResponse(json.dumps(res))
pwd = request.POST.get('pwd').strip() # 密码格式
if re.match('^[0-9a-zA-Z]*$', pwd) is None:
res['info'] = '密码格式不正确'
return HttpResponse(json.dumps(res)) # 会员
if request.POST.get('member_hy') != '':
member_hy = request.POST.get('member_hy').strip()
else:
member_hy = 0 # 是否已经存在了
mm = Member.objects.filter(member_name=member_name)
# 存在
print(mm)
if mm != None:
# 修改
mm[0].update(
member_name=member_name, member_pwd=pwd,member_tel=member_tel,member_email=member_email,member_nickname=member_nickname,member_hy=member_hy)
res['s'] = 1
res['info'] = '修改成功!'
return HttpResponse(json.dumps(res))
else:
# 添加新的
a_obj = Member(member_name=member_name, member_pwd=pwd,member_tel=member_tel,member_email=member_email,member_nickname=member_nickname,member_hy=member_hy)
a_obj.save()
res['s'] = 1
res['info'] = '添加成功!'
return HttpResponse(json.dumps(res)) member_obj = Member.objects.filter(id=aid).first()
return render(request,'member/add.html',locals()) @ddff_list
def list(request):
'''Member 列表''' member = Member.objects.all()
return render(request,'member/list.html',locals()) def list_part(request):
'''ajax分页器'''
where = getWhere(request)
member_list = Member.objects.filter(**where).all()
currentPage = int(request.GET.get('page', 1))
paginator = Paginator(member_list, 5)
if paginator.num_pages > 6:
if currentPage - 2 < 1:
pageRange = range(1, 6)
elif currentPage + 2 > paginator.num_pages:
pageRange = range(currentPage - 2, paginator.num_pages + 1)
else:
pageRange = range(currentPage - 2, currentPage + 2)
else:
pageRange = paginator.page_range
try:
member_list = paginator.page(currentPage)
except PageNotAnInteger:
member_list = paginator.page(1)
except EmptyPage:
member_list = paginator.page(paginator.num_pages)
return render(request, 'member/list_part.html', locals()) def getWhere(request)->dict:
'''where拼接'''
where = {}
member_id = request.POST.get('member_id')
title = request.POST.get('title')
member_hy = request.POST.get('member_hy')
manage_select = request.POST.get('manage_select')
if member_id:
where['id'] = member_id
if manage_select:
where[manage_select+'__icontains'] = title
if member_hy:
where['member_hy'] = member_hy
print(where)
return where def delete(request):
'''删'''
if request.method == 'POST':
id = request.POST.get('id')
else:
id = request.GET.get('id')
result = Member.objects.filter(id=id).delete()
import json
res = {'status': None, 'info': None}
if result:
res['status'] = 1
res['info'] = '操作成功'
else:
res['status'] = 0
res['info'] = '操作失败'
return HttpResponse(json.dumps(res)) # 把这个结果告诉给前台,ajax def change(request):
'''改'''
if request.method == 'POST':
aid = request.POST.get('id')
else:
aid = request.GET.get('id')
member = Member.objects.filter(id=aid).first()
print(member)
return add(request,aid) def alldelete(request):
'''全部删除'''
print(request.POST)
res = {'status': None, 'info': None}
# if result:
# res['status'] = 1
# res['info'] = '操作成功'
# else:
# res['status'] = 0
# res['info'] = '操作失败'
# return HttpResponse(json.dumps(res)) # 把这个结果告诉给前台,ajax

html-list:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>列表页</title>
<link href="/static/back/css/style.css" rel="stylesheet" type="text/css" />
<link href="/static/back/css/select.css" rel="stylesheet" type="text/css" />
<link rel="stylesheet" href="/static/bootstrap/css/bootstrap.css">
<script type="text/javascript" src="/static/back/js/jquery.js"></script>
<script type="text/javascript" src="/static/back/js/jquery.idTabs.min.js"></script>
<script type="text/javascript" src="/static/back/js/select-ui.min.js"></script>
<script type="text/javascript" src="/static/layer/layer.js"></script> <script type="text/javascript">
$(document).ready(function(e) {
$(".select1").uedSelect({
width : 345
});
$(".select2").uedSelect({
width : 167
});
$(".select3").uedSelect({
width : 100
});
});
</script> </head> <body> <div class="place">
<span>位置:</span>
<ul class="placeul">
<li><a href="{% url 'back:index/index/' %}">首页</a></li>
{# <li><a href="{% url 'back:index/index/' %}">系统设置</a></li>#}
</ul>
</div> <div class="formbody">
<div id="usual1" class="usual">
<div id="tab2" class="tabson"> {# form表单 #}
<form >
{% csrf_token %}
<ul class="seachform"> <li><label>查询方式</label>
<div class="vocation">
<select class="select3" name="manage_select">
<option value="">全部</option>
<option value="member_nickname">昵称</option>
<option value="member_tel">手机号</option>
<option value="member_email">email</option>
</select>
</div>
</li> <li>
<label>关键字</label><input name="title" type="text" class="scinput" />
</li> <li><label>用户</label>
<div class="vocation">
<select class="select3" name="member_id">
<option value="">全部</option>
{% for i1 in member %}
<option value="{{ i1.id }}">{{ i1.member_name }}</option>
{% endfor %}
</select>
</div>
</li> <li><label>是否会员</label>
<div class="vocation">
<select class="select3" name="member_hy">
<option value="">全部</option>
<option value="1">是</option>
<option value="0">否</option>
</select>
</div>
</li> <li>
<label>&nbsp;</label><input name="" type="button" class="scbtn" value="查询" id="search"/>
</li> </ul> {# 文章列表 #}
<table class="tablelist">
<thead>
<tr>
<th><input name="" type="checkbox" value="" checked="checked"/></th>
<th>编号<i class="sort"><img src="/static/back/images/px.gif" /></i></th>
<th>用户</th>
<th>手机号</th>
<th>Email</th>
<th>昵称</th>
<th>密码</th>
<th>会员</th>
<th>操作</th>
</tr>
</thead>
<tbody> <tbody class="maina"> </tbody> </tbody>
</table>
</form> </div> </div>
<script>
//首次页面加载,通过ajax拿到数据,放在maina容器里
show_list();
function show_list() {
var url = '{% url 'back:member/list_part/' %}';
$.post(url, $('form').serialize(), function (data) {
$(".maina").html(data);
});
}
//点击分页,点击a连接:
$(document).on('click', '.pagin a', function () {
$.post(this.href, $('form').serialize(), function (data) {
$(".maina").html(data);
});
return false;//让a连接失效
}); //点击查看
$(document).on('click', '.change', function () {
id = $(this).parent().data("id");
location.href="/back/member/change/?id="+id;
{# $.post("{% url 'back:article/delete/' %}", {#}
{# "id": id,#}
{# "csrfmiddlewaretoken": "{{ csrf_token }}"#}
{# }, function (data) {#}
{##}
{# })#}
}); //点击删除
$(document).on('click', '.del', function () {
_this = this;
layer.confirm('您确定要删除吗?', {
btn: ['确定', '取消']
}, function () {
id = $(_this).parent().data("id");
$.post("{% url 'back:member/delete/' %}", {
"id": id,
"csrfmiddlewaretoken": "{{ csrf_token }}"
}, function (data) {
if (data.status == 1) {
layer.msg(data.info, function () {
$(_this).parent().parent().remove();
}); } else {
layer.msg(data.info);
}
}, 'json');
}, function () {
});
return false;//让a连接失效
}); //点击全部删除
$(document).on('click', '.alldel', function () {
_this = this;
layer.confirm('您确定要删除吗?', {
btn: ['确定', '取消']
}, function () {
{# id = $(_this).parent().data("id");#}
$.post("{% url 'back:member/alldelete/' %}",$('form').serialize(), function (data) {
if (data.status == 1) {
layer.msg(data.info, function () {
$(_this).parent().parent().remove();
}); } else {
layer.msg(data.info);
}
}, 'json');
}, function () {
});
return false;//让a连接失效
}); //点击查询按钮
$(document).on('click', '#search', function () {
show_list();
}); </script> <script type="text/javascript">
$("#usual1 ul").idTabs();
</script> <script type="text/javascript">
$('.tablelist tbody tr:odd').addClass('odd');
</script> </div> </body> </html>

html-list_part:

{% for i in member_list %}
<tr>
<td><input name="memberid[]" type="checkbox" value="{{ i.id }}" /></td>
<td>{{ forloop.counter }}</td>
<td>{{ i.member_name }}</td>
<td>{{ i.member_tel }}</td>
<td>{{ i.member_email }}</td>
<td>{{ i.member_nickname }}</td>
<td>{{ i.member_pwd }}</td>
<td>{% if i.member_hy == '1' %}是{% else %}否{% endif %}</td>
<td data-id="{{ i.id }}"><a href="javascript:;" class="tablelink change">修改</a> <a href="javascript:;" class="tablelink del"> 删除</a></td>
</tr>
{% endfor %}
<tr class="pagin"><th colspan="9"> {# <div class="pagin">#}<span class="member" align="left"><a href="javascript:;" class="tablelink alldel">全部删除</a></span>
<span class="member" align="right">共 <i class="blue">{{ paginator.count }} </i> 条 记 录 </span>
{# <ul class="paginList">#}
{##}
{# </ul>#}
{# </div>#} {#分页器#}
<nav aria-label="Page navigation example">
<ul class="pagination justify-content-end">
{% if paginator.has_previous %}
<li class="page-item disabled">
<a class="page-link" href="/back/member/list_part/?page={{ p.previous_page_number }}" tabindex="-1" aria-disabled="true">上一页</a>
</li>
{% endif %}
{% for i in pageRange %} <li class="page-item {% if i == currentPage %}current{% endif %}"><a class="page-link" href="/back/member/list_part/?page={{ i }}">{{ i }}<span class="sr-only">(current)</span></a></li>
{% endfor %} {% if paginator.has_next %}
<li class="page-item">
<a class="page-link" href="/back/member/list_part/?page={{ p.next_page_number }}">下一页</a>
</li>
{% endif %}
</ul>
</nav> </th></tr>

html-add:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<link href="/static/back/css/style.css" rel="stylesheet" type="text/css" />
<link href="/static/back/css/select.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="/static/back/js/jquery.js"></script>
<script type="text/javascript" src="/static/back/js/jquery.idTabs.min.js"></script>
<script type="text/javascript" src="/static/back/js/select-ui.min.js"></script> <script type="text/javascript" src="/static/back/kindeditor/kindeditor-all.js"></script>
<script>
KindEditor.ready(function(K) {
window.editor = K.create('#content',{
width:"800",
height:"600",
resizeType:0,
uploadJson:"/back/article/upload/",
extraFileUploadParams:{
csrfmiddlewaretoken:"{{ csrf_token }}"
},
filePostName:"img"//上传图片的名称
});
});
</script> <script type="text/javascript">
$(document).ready(function(e) {
$(".select1").uedSelect({
width : 345
});
$(".select2").uedSelect({
width : 167
});
$(".select3").uedSelect({
width : 100
}); {# //加载富文本编辑器#}
{# KindEditor.ready(function(K) {#}
{# K.create('#content', {#}
{# allowFileManager : true,#}
{# filterMode:true,#}
{# afterBlur:function(){#}
{# this.sync("#content");#}
{# }#}
{# });#}
{# });#}
}); </script>
</head> <body>
<form action="{% url 'back:member/add/' %}" method="post">
{% csrf_token %}
<div class="place">
<span>位置:</span>
<ul class="placeul">
<li><a href="{% url 'back:index/index/' %}">首页</a></li>
{# <li><a href="#">系统设置</a></li>#}
</ul>
</div> <div class="formbody">
<div id="usual1" class="usual">
<div id="tab1" class="tabson"> <ul class="forminfo"> <div class="cityright">
</div> <li><label>姓名<b>*</b></label><div><input name="member_name" type='text' class="dfinput" value="{{ member_obj.member_name }}" placeholder="任意字符组合" style="width:518px;"/></div></li>
<li><label>手机号<b>*</b></label><div><input name="member_tel" type='text' class="dfinput" value="{{ member_obj.member_tel }}" placeholder="123456789" style="width:518px;"/></div></li>
<li><label>Email<b>*</b></label><div><input name="member_email" type='text' class="dfinput" value="{{ member_obj.member_email }}" placeholder="123@qq.com" style="width:518px;"/></div></li>
<li><label>昵称<b>*</b></label><div><input name="member_nickname" type='text' class="dfinput" value="{{ member_obj.member_nickname }}" placeholder="任意字符组合" style="width:518px;"/></div></li>
   <li><label>密码<b>*</b></label><div><input name="pwd" type="text" class="dfinput" value="{{ member_obj.member_pwd }}" placeholder="数字和任意大小写字母组合" style="width:518px;"/></div></li> <div><li><label>会员<b></b></label>
是<input name="member_hy" type="radio" {% if member_obj.member_hy == '1' %}checked="checked" {% endif %} class="" value="1" style="width:40px;"/>
不是<input name="member_hy" type="radio" class="" value="0" {% if member_obj.member_hy == '1' %}{% else %}checked="checked" {% endif %} style="width:40px;"/>
</li></div>
{# <li><label>会员<b>*</b></label><div><input name="member_hy" type='text' class="dfinput" value="{{ member_obj.member_hy }}" style="width:518px;"/></div></li>#}
{# <li><label>密码<b>*</b></label>#}
{# <div class="vocation">#}
{# <select class="select3" name="member_hy">#}
{# <option value="0">否</option>#}
{# <option {% if member_obj.member_hy == '1' %}selected{% endif %} value="1">是</option>#}
{# </select>#}
{# </div>#}
{# </li>#}
<li><label>&nbsp;</label><input name="dosubmit" type="button" class="btn" value="提交" id="submitBtn"></li> {# <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="submit" name="dosubmit" value="提交"/></li>#} </ul> </div> </div> </div>
</form> </body> </html>
<script src="/static/js/jquery.min.js"></script>
<script src="/static/layer/layer.js"></script>
<script>
$(document).ready(function () {
$("#submitBtn").click( function () {
// 点击事件
$.post("/back/member/add/",$('form').serialize() , function (data) {
//LoginName,Password,code
if (data['s'] == 1) {
layer.msg(data['info']);
// 跳转主页面
return false
} else {
//登陆失败
layer.msg(data['info']);
}
return false;
}, "json"); })
})
</script>

python-Web-django-后台的更多相关文章

  1. python web -- django

    一. 安装 django $ pip install django (env)$ python >> import django >> django.VERSION >& ...

  2. python web——Django架构

    环境:windows/linux/OS 需要的软件:Firefox 浏览器(别的也可以 不过firfox和python的webdriver兼容性好) git版本控制系统(使用前要配置 用户 编辑器可以 ...

  3. python web django base skill

    web框架本质 socket + 业务逻辑 框架实现socket tonado node.js 使用WSGI实现socket django flask 自己实现框架思路 wsgiref socket ...

  4. python web django 2nd level -- 待更新

    练习代码位置 实例代码位置 --> app: myblog Form 利用Form表单验证,自己写的html 思路: 新建一个类 LoginForm(forms.Form) 新建对象 obj = ...

  5. [Python] 利用Django进行Web开发系列(一)

    1 写在前面 在没有接触互联网这个行业的时候,我就一直很好奇网站是怎么构建的.现在虽然从事互联网相关的工作,但是也一直没有接触过Web开发之类的东西,但是兴趣终归还是要有的,而且是需要自己动手去实践的 ...

  6. python web框架——扩展Django&tornado

    一 Django自定义分页 目的:自定义分页功能,并把它写成模块(注意其中涉及到的python基础知识) models.py文件 # Create your models here. class Us ...

  7. 全面解读Python Web开发框架Django

    全面解读Python Web开发框架Django Django是一个开源的Web应用框架,由Python写成.采用MVC的软件设计模式,主要目标是使得开发复杂的.数据库驱动的网站变得简单.Django ...

  8. Ubuntu+Django+Nginx+uWSGI+Mysql搭建Python Web服务器

    Ubuntu+Django+Nginx+uWSGI+Mysql搭建Python Web服务器 闲着无聊的时候部署了一个Django项目玩,用vm虚拟机部署的. 准备工作 我使用的系统是Ubuntu16 ...

  9. Python web(Django)连接Sql server

    (开开心心每一天~ ---虫瘾师) Python Web(Django) 与SQL SERVRE的连接----Come QQ群:607021567(里面有很多开源代码和资料,并且python的游戏也有 ...

  10. Python Web(Django)与SQL SERVER的连接处理

    (开开心心每一天~ ---虫瘾师) Python Web(Django) 与SQL SERVRE的连接----Come QQ群:607021567(里面有很多开源代码和资料,并且python的游戏也有 ...

随机推荐

  1. C10K问题和多进程模型

    收录编辑来自马哥教育相关课程 内核空间的相关程序在调度用户空间里的进程的时候,也占用了cpu资源...... nginx可以作为两种类型的反向代理 http 和smtp(mail) C10K问题, 当 ...

  2. 洛谷P4689 [Ynoi2016]这是我自己的发明(树上莫队+树链剖分)

    题目描述 您正在打galgame,然后突然家长进来了,于是您假装在写数据结构题: 给一个树,n 个点,有点权,初始根是 1. m 个操作,每次操作: 1.将树根换为 x. 2.给出两个点 x,y,从  ...

  3. 音频转换 wav to wav、mp3或者其它

    1.首先介绍一种NAudio 的方式 需要导入 NAudio.dll 下面请看核心代码 using (WaveFileReader reader = new WaveFileReader(in_pat ...

  4. 创建虚拟机(kvm)

    --virsh console virt_name -- virsh nodeinfo                     # 查看kvm节点(服务器)信息 --virsh list [--all ...

  5. Tomcat怎么关闭日志输出

    tomcat中禁用catalina.out的输出,又可能很大. 1.直接修改catalina.sh文件的输出语句. 在文件中找到以下内容. if [ -z "$CATALINA_OUT&qu ...

  6. codeforces#1167F. Scalar Queries(树状数组+求贡献)

    题目链接: https://codeforces.com/contest/1167/problem/F 题意: 给出长度为$n$的数组,初始每个元素为$a_i$ 定义:$f(l, r)$为,重排$l$ ...

  7. codeforces#1163C2. Power Transmission (Hard Edition)(计算几何)

    题目链接: https://codeforces.com/contest/1163/problem/C2 题意: 给出$n$个点,任意两点连接一条直线,求相交直线的对数 数据范围: $1 \le n ...

  8. LGU67496 小$s$的玻璃弹珠

    题意 在一幢\(m\)层建筑你将获得\(n\)个一样的鸡蛋,从高于\(x\)的楼层落下的鸡蛋都会碎.如果一个蛋碎了,你就不能再把它掉下去. 你的目标是确切地知道\(x\)的值.问至少要扔几次才能确定. ...

  9. mysql 查看当前正在执行的语句

    查看当前正在执行的语句 show processlist:show processlist; 结束正在执行的语句进程 kill 进程id

  10. MongoDB系列二:MongoDB安装过程

    一.MongoDB安装,以Linux系统安装为例:(下载:www.mongodb.org 注意使用stable版本) 1.下载最新版本的MongoDB安装包,wget http://fastdl.mo ...