创建管理员应用:
python manage.py startapp mgr
创建处理url请求文件:
bysms/mgr/customer.py
# 开发人:龙技术
# 个人训练
# 开发时间:2021/8/29 12:27
from django.http import JsonResponse
import json
def dispatcher(request):
#将请求参数统一放入request的params属性中,方便后续处理
#GET请求 参数在request对象的GET属性中获取
if request.method=='GET':
request.params=request.GET
#POST/PUT/DELETE请求 参数从request对象的body属性中获取:
elif request.method in ['POST','PUT','DELETE']:
#根据接口,POST/PUT/DELETE请求的消息都是json格式
request.params=json.loads(request.body)
#根据不同的action分派给不同的函数进程处理
action=request.params['action']
if action=='list_customer':
return listcustomers(request)
elif action=='add_customer':
return addcustomer(request)
elif action=='modify_customer':
return modifycustomer(request)
elif action=='del_customer':
return deletecustomer(request)
else:
return JsonResponse({'ret':1,'msg':'不支持该类型http请求'})
在bysms/urls.py中添加路由:
urlpatterns = [
path('admin/', admin.site.urls),
path('sales/',include('sales.urls')),
path('api/mgr/',include('mgr.urls'))
]
新建管理员应用路由文件:
bysms/mgr/urls.py
from mgr import customer
from django.urls import path
urlpatterns = [
path('customers',customer.dispatcher),
]
查看数据库信息:
添加listcustomers()函数:
bysms/mgr/customer.py
# 开发人:龙技术
# 个人训练
# 开发时间:2021/8/29 12:27
from django.http import JsonResponse
import json
from common.models import Customer
def dispatcher(request):
#将请求参数统一放入request的params属性中,方便后续处理
#GET请求 参数在request对象的GET属性中获取
if request.method=='GET':
request.params=request.GET
#POST/PUT/DELETE请求 参数从request对象的body属性中获取:
elif request.method in ['POST','PUT','DELETE']:
#根据接口,POST/PUT/DELETE请求的消息都是json格式
request.params=json.loads(request.body)
#根据不同的action分派给不同的函数进程处理
action=request.params['action']
if action=='list_customer':
return listcustomers(request)
elif action=='add_customer':
return addcustomer(request)
elif action=='modify_customer':
return modifycustomer(request)
elif action=='del_customer':
return deletecustomer(request)
else:
return JsonResponse({'ret':1,'msg':'不支持该类型http请求'})
def listcustomers(resquest):
#返回一个QuerySet对象,包含所有表记录:
qs=Customer.objects.values()
#将QuerySet对象转化为list类型
#否则不能被转化为JSON字符串
retlist=list(qs)
return JsonResponse({'ret':0,'retlist':retlist})
添加用户信息:
创建addcustomer()函数:
#添加客户信息:
def addcustomer(request):
#获取请求的具体信息
info = request.params['data']
#从请求信息中获取要添加客户的信息
#并插入到数据库中
record=Customer.objects.create(
name=info['name'],
phonenumber=info['phonenumber'],
address=info['address'],
qq=info['qq']
)
return JsonResponse({'ret':0,'id':record.id})
临时取消CSRF校验:
在bysms/bysms/settings.py里面的MIDDLEWARE中注释掉’django.middleware.csrf.CsrfViewMiddleware’:
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
# 'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
修改客户信息:
创建modifycustomer()函数:
def modifycustomer(request):
#从请求消息中获取修改客户信息
#找到该客户,并且进行修改操作
customerid=request.params['id']
newdata=request.params['newdata']
try:
#根据id从数据库中找到相应的客户记录
customer=Customer.objects.get(id=customerid)
except Customer.DoesNotExist:
return {
'ret':1,
'msg':f'id为{customerid}的客户不存在'
}
if 'name' in newdata:
customer.name=newdata['name']
if 'phonenumber'in newdata:
customer.phonenumber=newdata['phonenumber']
if 'address' in newdata:
customer.address=newdata['address']
if 'qq' in newdata:
customer.qq=newdata['qq']
#注意,一定要执行save才能将数据修改保存到数据库
customer.save()
return JsonResponse({'ret':0})
删除客户信息:
创建deletecustomer()函数:
def deletecustomer(request):
customerid=request.params['id']
try:
#根据id从数据库中找到相应的客户信息:
customer=Customer.objects.get(id=customerid)
except Customer.DoesNotExist:
return {
'ret':1,
'msg':f'id为{customerid}的客户不存在'
}
#delete方法将该记录从数据库中删除:
customer.delete()
return JsonResponse({'ret':0})
下载前端静态界面文件
在官网(http://www.byhy.net/tut/webdev/django/07/)上下载z_dist文件
保存在项目文件根目录下
添加静态文件路由:
bysms/bysms/urls.py:
from django.contrib import admin
from django.urls import path,include
#静态文件服务
from django.conf.urls.static import static
urlpatterns = [
path('admin/', admin.site.urls),
path('sales/',include('sales.urls')),
path('api/mgr/',include('mgr.urls'))
]+ static('/',document_root='./z_dist')
进入管理员界面:
127.0.0.1/mgr/index.html