add.html
{% extends 'myadmin/index.html' %}
{% block title %}
<title>后台会员添加</title>
{% endblock %}
{% block con %}
<div class="row-content am-cf">
<div class="row">
<div class="am-u-sm-12 am-u-md-12 am-u-lg-12">
<div class="widget am-cf">
<div class="widget-head am-cf">
<div class="widget-title am-fl">
线条表单
</div>
<div class="widget-function am-fr">
<a href="javascript:;" class="am-icon-cog">
</a>
</div>
</div>
<div class="widget-body am-fr">
<form action="{% url 'myadmin_user_insert' %}" method="POST" enctype="multipart/form-data" class="am-form tpl-form-line-form">
{% csrf_token %}
<div class="am-form-group">
<label for="user-name" class="am-u-sm-3 am-form-label">
昵称
</label>
<div class="am-u-sm-9">
<input type="text" name="nikename" class="tpl-form-input"
placeholder="请输入昵称">
</div>
</div>
<div class="am-form-group">
<label for="user-name" class="am-u-sm-3 am-form-label">
密码
</label>
<div class="am-u-sm-9">
<input type="password" name="password" class="tpl-form-input"
placeholder="请输入密码">
</div>
</div>
<div class="am-form-group">
<label for="user-name" class="am-u-sm-3 am-form-label">
手机号
</label>
<div class="am-u-sm-9">
<input type="text" name="phone" class="tpl-form-input"
placeholder="请输入手机号">
</div>
</div>
<div class="am-form-group">
<label for="user-name" class="am-u-sm-3 am-form-label">
邮箱
</label>
<div class="am-u-sm-9">
<input type="email" name="email" class="tpl-form-input"
placeholder="请输入email">
</div>
</div>
<div class="am-form-group">
<label for="user-name" class="am-u-sm-3 am-form-label">
年龄
</label>
<div class="am-u-sm-9">
<input type="number" name="age" class="tpl-form-input"
placeholder="请输入年龄">
</div>
</div>
<div class="am-form-group">
<label for="user-name" class="am-u-sm-3 am-form-label">
性别
</label>
<div class="am-u-sm-9">
<label class="am-radio-inline"><input type="radio" value="0" name="sex"> 女</label>
<label class="am-radio-inline"><input type="radio" value="1" name="sex"> 男</label>
</div>
</div>
<div class="am-form-group">
<label for="user-weibo" class="am-u-sm-3 am-form-label">
封面图
<span class="tpl-form-line-small-title">
Images
</span>
</label>
<div class="am-u-sm-9">
<div class="am-form-group am-form-file">
<div class="tpl-form-file-img">
<img src="assets/img/a5.png" alt="">
</div>
<button type="button" class="am-btn am-btn-danger am-btn-sm">
<i class="am-icon-cloud-upload">
</i>
添加封面图片
</button>
<input id="doc-form-file" name="pic" type="file" multiple="">
</div>
</div>
</div>
<div class="am-form-group">
<div class="am-u-sm-9 am-u-sm-push-3">
<button class="am-btn am-btn-primary tpl-btn-bg-color-success ">
提交
</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
{% endblock %}
from django.shortcuts import render
from django.http import HttpResponse
from django.contrib.auth.hashers import make_password, check_password
from .. models import Users
# Create your views here.
# 用户模型的管理
# 会员添加表单
def user_add(request):
return render(request,'myadmin/users/add.html')
# 会员执行添加
def user_insert(request):
# 接收表单数据
data = request.POST.dict()
data.pop('csrfmiddlewaretoken')
# 处理密码 加密 存入数据库
data['password'] = make_password(data['password'], None, 'pbkdf2_sha256')
# 头像上传
# 接收上传的文件 request.FILES.获取文件数据
myfile = request.FILES.get('pic',None)
if not myfile:
# 没有选择头像上传,
#history.back(-1)这句话指的是返回上一个页面
return HttpResponse('<script>alert("没有选择头像上传");history.back(-1);</script>')
# 处理头像的上传 1.jpg ==> [1,jpg]
# 把路径报保存到数据库
data['pic_url'] = uploads_pic(myfile)
try:
# 创建模型,添加数据
ob = Users(**data)
ob.save()
return HttpResponse('<script>alert("添加成功");location.href="/myadmin/user/index/";</script>')
except:
pass
return HttpResponse('<script>alert("添加失败");history.back(-1);</script>')
# 会员列表
def user_index(request):
return HttpResponse('user_index')
# 头像上传封装成函数
def uploads_pic(myfile):
try:
import time
#获取当前时间+'.'+jpg, 此处split将 1.jpg ==>[1,'jpg'] .pop() 删除第一个出现的元素 [1,'jpg'] ==> 'jpg'
filename = str(time.time())+"."+myfile.name.split('.').pop()
# 保存路径/+文件名称,wb+ 二进制可读写打开
destination = open("./static/uploads/"+filename,"wb+")
for chunk in myfile.chunks():# 分块写入文件
destination.write(chunk)
destination.close()
#把文件路径返回
return '/static/uploads/'+filename
except:
return False
from django.db import models
# Create your models here.
# 定义会员模型
class Users(models.Model):
nikename = models.CharField(max_length=20,null=True)
password = models.CharField(max_length=77)
# phone = models.CharField(max_length=11,unique=True)
phone = models.CharField(max_length=11)
email = models.CharField(max_length=100)
age = models.IntegerField(null=True)
pic_url = models.CharField(max_length=100)
SEX_CHOICES = (
(0, '女'),
(1, '男'),
)
sex = models.CharField(max_length=1,null=True,choices=SEX_CHOICES)
# 0 正常 1禁用 2 删除 ....
status = models.IntegerField(default=0)
addtime = models.DateTimeField(auto_now_add=True)