为视图添加异常判断处理

This commit is contained in:
yangjian 2019-07-25 22:17:34 +08:00
parent 92de40fe64
commit 90f989eea2
3 changed files with 294 additions and 212 deletions

View File

@ -13,7 +13,6 @@ from app_doc.models import *
def check_code(request):
import io
from . import check_code as CheckCode
stream = io.BytesIO()
# img图片对象,code在图像中写的内容
img, code = CheckCode.create_validate_code()
@ -22,31 +21,35 @@ def check_code(request):
request.session["CheckCode"] = code
return HttpResponse(stream.getvalue())
# 登录视图
def log_in(request):
if request.method == 'GET':
if request.user.is_authenticated:
return redirect('/user/user_manage')
return redirect('/')
else:
return render(request,'login.html',locals())
elif request.method == 'POST':
username = request.POST.get('username','')
pwd = request.POST.get('password','')
if username != '' and pwd != '':
user = authenticate(username=username,password=pwd)
if user is not None:
if user.is_active:
login(request,user)
return redirect('/user/user_manage')
try:
username = request.POST.get('username','')
pwd = request.POST.get('password','')
if username != '' and pwd != '':
user = authenticate(username=username,password=pwd)
if user is not None:
if user.is_active:
login(request,user)
return redirect('/')
else:
errormsg = '用户被禁用!'
return render(request, 'login.html', locals())
else:
errormsg = '用户被禁用!'
errormsg = '用户名或密码错误'
return render(request, 'login.html', locals())
else:
errormsg = '用户名或密码错误!'
return render(request, 'login.html', locals())
else:
errormsg = '用户名或密码错误!'
return render(request, 'login.html', locals())
except Exception as e:
return HttpResponse('请求出错')
# 注册视图
@ -158,32 +161,41 @@ def admin_create_user(request):
return JsonResponse({'status':False})
else:
return JsonResponse({'status':False})
else:
return HttpResponse('方法不允许')
# 管理员后台 - 修改密码
@superuser_only
def admin_change_pwd(request):
if request.method == 'POST':
user_id = request.POST.get('user_id',None)
password = request.POST.get('password',None)
if user_id and password:
user = User.objects.get(id=int(user_id))
user.set_password(password)
user_id.save()
return JsonResponse({'status':True,'data':'修改成功'})
else:
return JsonResponse({'status':False,'data':'参数错误'})
try:
user_id = request.POST.get('user_id',None)
password = request.POST.get('password',None)
if user_id and password:
user = User.objects.get(id=int(user_id))
user.set_password(password)
user_id.save()
return JsonResponse({'status':True,'data':'修改成功'})
else:
return JsonResponse({'status':False,'data':'参数错误'})
except Exception as e:
return JsonResponse({'status':False,'data':'请求错误'})
else:
return JsonResponse({'status':False,'data':'方法错误'})
# 管理员后台 - 删除用户
@superuser_only
def admin_del_user(request):
if request.method == 'POST':
user_id = request.POST.get('user_id',None)
user = User.objects.get(id=int(user_id))
user.delete()
return JsonResponse({'status':True,'data':'删除成功'})
try:
user_id = request.POST.get('user_id',None)
user = User.objects.get(id=int(user_id))
user.delete()
return JsonResponse({'status':True,'data':'删除成功'})
except Exception as e:
return JsonResponse({'status':False,'data':'删除出错'})
else:
return JsonResponse({'status':False,'data':'方法错误'})
@ -214,6 +226,8 @@ def admin_project(request):
except EmptyPage:
projects = paginator.page(paginator.num_pages)
return render(request,'app_admin/admin_project.html',locals())
else:
return HttpResponse('方法错误')
# 管理员后台 - 文档管理
@ -276,14 +290,19 @@ def admin_doctemp(request):
@login_required()
def change_pwd(request):
if request.method == 'POST':
password = request.POST.get('password',None)
if password:
if len(password) >= 6:
user = User.objects.get(id=request.user.id)
user.set_password(password)
user.save()
return JsonResponse({'status':True,'data':'修改成功'})
try:
password = request.POST.get('password',None)
if password:
if len(password) >= 6:
user = User.objects.get(id=request.user.id)
user.set_password(password)
user.save()
return JsonResponse({'status':True,'data':'修改成功'})
else:
return JsonResponse({'status':False,'data':'密码不得少于6位数'})
else:
return JsonResponse({'status':False,'data':'密码不得少于6位数'})
else:
return JsonResponse({'status':False,'data':'参数错误'})
return JsonResponse({'status':False,'data':'参数错误'})
except Exception as e:
return JsonResponse({'status':False,'data':'修改出错'})
else:
return HttpResponse('方法错误')

View File

@ -16,17 +16,20 @@ def project_list(request):
@login_required()
def create_project(request):
if request.method == 'POST':
name = request.POST.get('pname','')
desc = request.POST.get('desc','')
if name != '':
project = Project.objects.create(
name=name,
intro=desc,
create_user=request.user
)
project.save()
return JsonResponse({'status':True,'data':{'id':project.id,'name':project.name}})
else:
try:
name = request.POST.get('pname','')
desc = request.POST.get('desc','')
if name != '':
project = Project.objects.create(
name=name,
intro=desc,
create_user=request.user
)
project.save()
return JsonResponse({'status':True,'data':{'id':project.id,'name':project.name}})
else:
return JsonResponse({'status':False})
except Exception as e:
return JsonResponse({'status':False})
else:
return JsonResponse({'status':False})
@ -36,45 +39,47 @@ def create_project(request):
def project_index(request,pro_id):
# 获取文集
if request.method == 'GET':
# 获取文集信息
project = Project.objects.get(id=int(pro_id))
# 获取搜索词
kw = request.GET.get('kw','')
if kw == '':
doc = Doc.objects.filter(top_doc=int(pro_id)).order_by('id')
# 获取文集第一篇文档作为默认内容
if doc.count() > 0:
doc = doc[0]
else:
doc = None
else: # 搜索结果
search_result = Doc.objects.filter(top_doc=int(pro_id),pre_content__icontains=kw)
# 获取文集下所有一级文档
project_docs = Doc.objects.filter(top_doc=int(pro_id), parent_doc=0)
return render(request,'app_doc/project.html',locals())
# 更新文集
elif request.method == 'PUT':
pass
# 删除文集
elif request.method == 'DELETE':
pass
try:
# 获取文集信息
project = Project.objects.get(id=int(pro_id))
# 获取搜索词
kw = request.GET.get('kw','')
if kw == '':
doc = Doc.objects.filter(top_doc=int(pro_id)).order_by('id')
# 获取文集第一篇文档作为默认内容
if doc.count() > 0:
doc = doc[0]
else:
doc = None
else: # 搜索结果
search_result = Doc.objects.filter(top_doc=int(pro_id),pre_content__icontains=kw)
# 获取文集下所有一级文档
project_docs = Doc.objects.filter(top_doc=int(pro_id), parent_doc=0)
return render(request,'app_doc/project.html',locals())
except Exception as e:
return HttpResponse('请求出错')
else:
return HttpResponse('方法不允许')
# 修改文集
@login_required()
def modify_project(request):
if request.method == 'POST':
pro_id = request.POST.get('pro_id',None)
project = Project.objects.get(id=pro_id)
if request.user == project.create_user:
name = request.POST.get('name',None)
content = request.POST.get('desc',None)
project.name = name
project.intro = content
project.save()
return JsonResponse({'status':True,'data':'修改成功'})
else:
return JsonResponse({'status':False,'data':'非法请求'})
try:
pro_id = request.POST.get('pro_id',None)
project = Project.objects.get(id=pro_id)
if request.user == project.create_user:
name = request.POST.get('name',None)
content = request.POST.get('desc',None)
project.name = name
project.intro = content
project.save()
return JsonResponse({'status':True,'data':'修改成功'})
else:
return JsonResponse({'status':False,'data':'非法请求'})
except Exception as e:
return JsonResponse({'status':False,'data':'请求出错'})
else:
return JsonResponse({'status':False,'data':'方法不允许'})
@ -82,118 +87,149 @@ def modify_project(request):
# 删除文集
@login_required()
def del_project(request):
pro_id = request.POST.get('pro_id','')
if pro_id != '':
pro = Project.objects.get(id=pro_id)
if request.user == pro.create_user:
pro.delete()
return JsonResponse({'status':True})
try:
pro_id = request.POST.get('pro_id','')
if pro_id != '':
pro = Project.objects.get(id=pro_id)
if request.user == pro.create_user:
pro.delete()
return JsonResponse({'status':True})
else:
return JsonResponse({'status':False,'data':'非法请求'})
else:
return JsonResponse({'status':False,'data':'非法请求'})
else:
return JsonResponse({'status':False,'data':'参数错误'})
return JsonResponse({'status':False,'data':'参数错误'})
except Exception as e:
return JsonResponse({'status':False,'data':'请求出错'})
# 管理文集
@login_required()
def manage_project(request):
if request.method == 'GET':
search_kw = request.GET.get('kw', None)
if search_kw:
pro_list = Project.objects.filter(create_user=request.user,intro__icontains=search_kw)
else:
pro_list = Project.objects.filter(create_user=request.user)
return render(request,'app_doc/manage_project.html',locals())
try:
search_kw = request.GET.get('kw', None)
if search_kw:
pro_list = Project.objects.filter(create_user=request.user,intro__icontains=search_kw)
else:
pro_list = Project.objects.filter(create_user=request.user)
return render(request,'app_doc/manage_project.html',locals())
except Exception as e:
return HttpResponse('请求出错')
else:
return HttpResponse('方法不允许')
# 文档浏览页页
def doc(request,pro_id,doc_id):
if request.method == 'GET':
if pro_id != '' and doc_id != '':
# 获取文集信息
project = Project.objects.get(id=int(pro_id))
# 获取文档内容
doc = Doc.objects.get(id=int(doc_id))
# 获取文集下一级文档
project_docs = Doc.objects.filter(top_doc=doc.top_doc, parent_doc=0)
return render(request,'app_doc/project.html',locals())
try:
if pro_id != '' and doc_id != '':
# 获取文集信息
project = Project.objects.get(id=int(pro_id))
# 获取文档内容
doc = Doc.objects.get(id=int(doc_id))
# 获取文集下一级文档
project_docs = Doc.objects.filter(top_doc=doc.top_doc, parent_doc=0)
return render(request,'app_doc/project.html',locals())
else:
return HttpResponse('参数错误')
except Exception as e:
return HttpResponse('请求出错')
else:
pass
return HttpResponse('方法不允许')
# 创建文档
@login_required()
def create_doc(request):
if request.method == 'GET':
# doc_list = Doc.objects.filter(create_user=request.user)
project_list = Project.objects.filter(create_user=request.user)
doctemp_list = DocTemp.objects.filter(create_user=request.user).values('id','name','create_time')
return render(request,'app_doc/create_doc.html',locals())
try:
# doc_list = Doc.objects.filter(create_user=request.user)
project_list = Project.objects.filter(create_user=request.user)
doctemp_list = DocTemp.objects.filter(create_user=request.user).values('id','name','create_time')
return render(request,'app_doc/create_doc.html',locals())
except Exception as e:
return HttpResponse('请求出错')
elif request.method == 'POST':
project = request.POST.get('project','')
parent_doc = request.POST.get('parent_doc','')
doc_name = request.POST.get('doc_name','')
doc_content = request.POST.get('content','')
pre_content = request.POST.get('pre_content','')
if project != '' and doc_name != '' and project != '-1':
doc = Doc.objects.create(
name=doc_name,
content = doc_content,
pre_content= pre_content,
parent_doc= int(parent_doc) if parent_doc != '' else 0,
top_doc= int(project),
create_user=request.user
)
return JsonResponse({'status':True})
else:
return JsonResponse({'status':False})
try:
project = request.POST.get('project','')
parent_doc = request.POST.get('parent_doc','')
doc_name = request.POST.get('doc_name','')
doc_content = request.POST.get('content','')
pre_content = request.POST.get('pre_content','')
if project != '' and doc_name != '' and project != '-1':
doc = Doc.objects.create(
name=doc_name,
content = doc_content,
pre_content= pre_content,
parent_doc= int(parent_doc) if parent_doc != '' else 0,
top_doc= int(project),
create_user=request.user
)
return JsonResponse({'status':True,'data':'创建成功'})
else:
return JsonResponse({'status':False,'data':'参数错误'})
except Exception as e:
return JsonResponse({'status':False,'data':'请求出错'})
else:
return JsonResponse({'status':False,'data':'方法不允许'})
# 修改文档
@login_required()
def modify_doc(request,doc_id):
if request.method == 'GET':
doc = Doc.objects.get(id=doc_id)
if request.user == doc.create_user:
project = Project.objects.get(id=doc.top_doc)
doc_list = Doc.objects.filter(top_doc=project.id)
doctemp_list = DocTemp.objects.filter(create_user=request.user)
return render(request,'app_doc/modify_doc.html',locals())
else:
return HttpResponse("非法请求")
try:
doc = Doc.objects.get(id=doc_id)
if request.user == doc.create_user:
project = Project.objects.get(id=doc.top_doc)
doc_list = Doc.objects.filter(top_doc=project.id)
doctemp_list = DocTemp.objects.filter(create_user=request.user)
return render(request,'app_doc/modify_doc.html',locals())
else:
return HttpResponse("非法请求")
except Exception as e:
return HttpResponse('请求出错')
elif request.method == 'POST':
doc_id = request.POST.get('doc_id','') # 文档ID
project = request.POST.get('project', '') # 文集ID
parent_doc = request.POST.get('parent_doc', '') # 上级文档ID
doc_name = request.POST.get('doc_name', '') # 文档名称
doc_content = request.POST.get('content', '') # 文档内容
pre_content = request.POST.get('pre_content', '') # 文档Markdown格式内容
if doc_id != '' and project != '' and doc_name != '' and project != '-1':
# 更新文档内容
Doc.objects.filter(id=int(doc_id)).update(
name=doc_name,
content=doc_content,
pre_content=pre_content,
parent_doc=int(parent_doc) if parent_doc != '' else 0,
)
return JsonResponse({'status': True})
else:
return JsonResponse({'status': False})
try:
doc_id = request.POST.get('doc_id','') # 文档ID
project = request.POST.get('project', '') # 文集ID
parent_doc = request.POST.get('parent_doc', '') # 上级文档ID
doc_name = request.POST.get('doc_name', '') # 文档名称
doc_content = request.POST.get('content', '') # 文档内容
pre_content = request.POST.get('pre_content', '') # 文档Markdown格式内容
if doc_id != '' and project != '' and doc_name != '' and project != '-1':
# 更新文档内容
Doc.objects.filter(id=int(doc_id)).update(
name=doc_name,
content=doc_content,
pre_content=pre_content,
parent_doc=int(parent_doc) if parent_doc != '' else 0,
)
return JsonResponse({'status': True,'data':'修改成功'})
else:
return JsonResponse({'status': False,'data':'参数错误'})
except Exception as e:
return JsonResponse({'status':False,'data':'请求出错'})
# 删除文档
@login_required()
def del_doc(request):
doc_id = request.POST.get('doc_id',None)
if doc_id:
doc = Doc.objects.get(id=doc_id)
if request.user == doc.create_user:
doc.delete()
return JsonResponse({'status': True, 'data': '删除完成'})
try:
doc_id = request.POST.get('doc_id',None)
if doc_id:
doc = Doc.objects.get(id=doc_id)
if request.user == doc.create_user:
doc.delete()
return JsonResponse({'status': True, 'data': '删除完成'})
else:
return JsonResponse({'status': False, 'data': '非法请求'})
else:
return JsonResponse({'status': False, 'data': '非法请求'})
else:
return JsonResponse({'status':False,'data':'参数错误'})
return JsonResponse({'status':False,'data':'参数错误'})
except Exception as e:
return JsonResponse({'status':False,'data':'请求出错'})
# 管理文档
@login_required()
@ -205,6 +241,9 @@ def manage_doc(request):
else:
doc_list = Doc.objects.filter(create_user=request.user)
return render(request,'app_doc/manage_doc.html',locals())
else:
return HttpResponse('方法不允许')
# 创建文档模板
@login_required()
@ -212,83 +251,107 @@ def create_doctemp(request):
if request.method == 'GET':
return render(request,'app_doc/create_doctemp.html',locals())
elif request.method == 'POST':
name = request.POST.get('name','')
content = request.POST.get('content','')
if name != '':
doctemp = DocTemp.objects.create(
name = name,
content = content,
create_user=request.user
)
doctemp.save()
return JsonResponse({'status':True})
else:
return JsonResponse({'status':False,'data':'模板标题不能为空'})
try:
name = request.POST.get('name','')
content = request.POST.get('content','')
if name != '':
doctemp = DocTemp.objects.create(
name = name,
content = content,
create_user=request.user
)
doctemp.save()
return JsonResponse({'status':True,'data':'创建成功'})
else:
return JsonResponse({'status':False,'data':'模板标题不能为空'})
except Exception as e:
return JsonResponse({'status':False,'data':'请求出错'})
else:
return JsonResponse({'status':False,'data':'方法不允许'})
# 修改文档模板
@login_required()
def modify_doctemp(request,doctemp_id):
if request.method == 'GET':
doctemp = DocTemp.objects.get(id=doctemp_id)
if request.user.id == doctemp.create_user.id:
return render(request,'app_doc/modify_doctemp.html',locals())
else:
return HttpResponse('非法请求')
elif request.method == 'POST':
doctemp_id = request.POST.get('doctemp_id','')
name = request.POST.get('name','')
content = request.POST.get('content','')
if doctemp_id != '' and name !='':
try:
doctemp = DocTemp.objects.get(id=doctemp_id)
if request.user.id == doctemp.create_user.id:
doctemp.name = name
doctemp.content = content
doctemp.save()
return JsonResponse({'status':True,'data':'修改成功'})
return render(request,'app_doc/modify_doctemp.html',locals())
else:
return JsonResponse({'status':False,'data':'非法操作'})
else:
return JsonResponse({'status':False,'data':'参数错误'})
return HttpResponse('非法请求')
except Exception as e:
return HttpResponse('请求出错')
elif request.method == 'POST':
try:
doctemp_id = request.POST.get('doctemp_id','')
name = request.POST.get('name','')
content = request.POST.get('content','')
if doctemp_id != '' and name !='':
doctemp = DocTemp.objects.get(id=doctemp_id)
if request.user.id == doctemp.create_user.id:
doctemp.name = name
doctemp.content = content
doctemp.save()
return JsonResponse({'status':True,'data':'修改成功'})
else:
return JsonResponse({'status':False,'data':'非法操作'})
else:
return JsonResponse({'status':False,'data':'参数错误'})
except Exception as e:
return JsonResponse({'status':False,'data':'请求出错'})
else:
return HttpResponse('方法不允许')
# 删除文档模板
@login_required()
def del_doctemp(request):
doctemp_id = request.POST.get('doctemp_id','')
if doctemp_id != '':
doctemp = DocTemp.objects.get(id=doctemp_id)
if request.user.id == doctemp.create_user.id:
doctemp.delete()
return JsonResponse({'status':True,'data':'删除完成'})
try:
doctemp_id = request.POST.get('doctemp_id','')
if doctemp_id != '':
doctemp = DocTemp.objects.get(id=doctemp_id)
if request.user.id == doctemp.create_user.id:
doctemp.delete()
return JsonResponse({'status':True,'data':'删除完成'})
else:
return JsonResponse({'status':False,'data':'非法请求'})
else:
return JsonResponse({'status':False,'data':'非法请求'})
else:
return JsonResponse({'status': False, 'data': '参数错误'})
return JsonResponse({'status': False, 'data': '参数错误'})
except Exception as e:
return JsonResponse({'status':False,'data':'请求出错'})
# 管理文档模板
@login_required()
def manage_doctemp(request):
if request.method == 'GET':
search_kw = request.GET.get('kw', None)
if search_kw:
doctemp_list = DocTemp.objects.filter(create_user=request.user,content__icontains=search_kw)
else:
doctemp_list = DocTemp.objects.filter(create_user=request.user)
return render(request, 'app_doc/manage_doctemp.html', locals())
try:
search_kw = request.GET.get('kw', None)
if search_kw:
doctemp_list = DocTemp.objects.filter(create_user=request.user,content__icontains=search_kw)
else:
doctemp_list = DocTemp.objects.filter(create_user=request.user)
return render(request, 'app_doc/manage_doctemp.html', locals())
except Exception as e:
return HttpResponse('请求出错')
else:
return HttpResponse('方法不允许')
# 获取指定文档模板
@login_required()
def get_doctemp(request):
if request.method == 'POST':
doctemp_id = request.POST.get('doctemp_id','')
if doctemp_id != '':
content = DocTemp.objects.get(id=int(doctemp_id)).serializable_value('content')
return JsonResponse({'status':True,'data':content})
else:
return JsonResponse({'status':False,'data':'参数错误'})
try:
doctemp_id = request.POST.get('doctemp_id','')
if doctemp_id != '':
content = DocTemp.objects.get(id=int(doctemp_id)).serializable_value('content')
return JsonResponse({'status':True,'data':content})
else:
return JsonResponse({'status':False,'data':'参数错误'})
except Exception as e:
return JsonResponse({'status':False,'data':'请求出错'})
else:
return JsonResponse({'status':False,'data':'方法错误'})

View File

@ -3,7 +3,7 @@
<html lang="zh-cn">
<head>
<meta charset="UTF-8">
<title>MrDoc</title>
<title>MrDoc - 一个简单的文档写作系统</title>
<link href="{% static 'layui/css/layui.css' %}" rel="stylesheet">
<link href="{% static 'style.css' %}" rel="stylesheet">
</head>
@ -55,7 +55,7 @@
<div class="project-item">
<a href="{% url 'pro_index' p.id %}">
<div class="layui-card">
<div class="layui-card-header"><strong>{{ p.name }}</strong>
<div class="layui-card-header"><strong><i class="layui-icon layui-icon-read"></i> {{ p.name }}</strong>
</div>
<div class="layui-card-body">
<p>作者:{{p.create_user}}</p>