当前位置: 首页 > news >正文

基于Bootstrap+Django+Python的点菜信息管理系统

目 录
1 引言 1
1.1课题背景 1
1.2选题意义 1
2 系统可行性分析 1
2.1 技术可行性分析 1
2.2 经济可行性分析 1
2.3 操作可行性分析 2
3系统分析 2
3.1 系统功能分析 2
3.1.1 管理员模块 2
3.1.2 用户模块 3
3.1.3 后厨模块 4
3.2 系统业务流程分析 4
3.3 系统数据流程分析 5
3.4 数据字典 6
4 系统设计 9
4.1 功能结构设计 9
4.2 数据库设计 9
4.2.1 数据库概念结构设计 9
4.2.2 将E-R图转换为关系模型 11
4.3.3 关系模式的规范化 12
4.3.4 数据库表设计 13
4.3.5 数据库表中约束设计 15
5 系统实现 16
5.1 顾客页面实现 16
5.2 后厨页面实现 18
5.3 管理员页面实现 19
6 总结 22
参考文献 24
2 系统可行性分析
2.1 技术可行性分析
点菜信息管理系统将Sqlite作为数据库,Sqlite作为开源的关系型数据库,并且具有成本低、体积小、速度快等特点。整个系统是基于Django框架搭建的,Django框架本身就已经拥有了很多基础性的功能,不需要再去重复的完成大量的编码工作,提高了程序的规范性和代码的重用性。采用Bootstrap4 + jQuery作为前端的技术支持,后台使用Python面向对象语言。由此可见,实现点菜信息管理系统在技术上是完全可行的,并且可以完成点菜信息管理系统所需要的基本功能。
2.2 经济可行性分析
从目前的社会现状来看传统的点菜模式不仅浪费时间,效率低下,而且特别耗费成本与人力。于此不同,使用点菜信息管理系统能大大降低人力的成本这样就节省了相对应的成本开销,避免人员的冗余,并且开发系统使用的工具和技术都是开源的,投入该系统的成本并不高。所以对于餐馆来说开发一个点菜信息管理系统在当前的资金投入和使用该系统降低的成本上是可以接受的,由此来看此系统从经济上来看是可行的。
2.3 操作可行性分析
该系统使用的技术都是目前大众普遍使用的,并且操作简单,业务逻辑流程条例清晰,使用方便,并且用户使用起来上手快,容易理解,不需要理解太深的东西。由此来看,该系统从操作上来看是可行的。
3系统分析
3.1 系统功能分析
该系统为点菜管理信息系统。网上点菜系统是一种可以自主选择、个性化、便捷化、特色化的点餐模式,它的大力推广使用为餐厅节约了成本,同时也解决了消费者在传统点菜时存在的不少麻烦。通过对系统的需求进行分析得出,该系统的功能模块分为三种,分别是管理员模块、用户模块、后厨模块,并且各个用户模块下对应着各自的功能实现。
3.1.1 管理员模块
(1)管理员登录:对于已经存在管理员可进行登录。
(2)订单信息查询:管理员可以查询系统内所有存在订单。
(3)职工信息管理:管理员可以登录该系统对已经注册的职工个人信息进行增加、删除、改动、查找等操作。
(4)餐桌信息管理:管理员可以对该系统对已经存在的餐桌信息进行增加、删除、改动、查找等操作。本文转载自http://www.biyezuopin.vip/onews.asp?id=15595
(5)菜品信息管理:管理员可以对该系统对已经存在的菜品信息进行增加、删除、改动、查找等操作。

from django.shortcuts import render, redirect
from django.http import HttpResponse
from .models import Food, Foodtype, Order, OrderItem, Staff, Staff_Table
from django.views.decorators.csrf import csrf_exempt
from django.contrib.auth.decorators import login_required
from django.db import connection
from . import forms
import json
import datetime

#
@csrf_exempt
def OrderHome(request):
    if request.method == "GET":
        foodList = Food.objects.all()
        foodTypeList = Foodtype.objects.all()
        tableList = Staff_Table.objects.all()
        return render(
            request,
            'OrderHome.html',
            {
                'foodList': foodList,
                'foodTypeList': foodTypeList,
                'tableList': tableList,
            }
        )
    elif request.method == "POST":
        foodList = json.loads(request.POST.get('foodList'))
        table_id = request.POST.get('table')

        # 创建订单 填写基本信息
        new_order = Order(table_id=table_id, is_pay=False)
        staff_in_charge = Staff_Table.objects.get(pk=table_id).staff
        new_order.staff = staff_in_charge   # 当前桌子的负责人
        new_order.save()

        # 先 save 再获取 ID
        order_id = new_order.ID
        food_amount = 0
        total_price = 0

        for food in foodList:
            curFood = Food.objects.get(pk=food['id'])
            price = curFood.price
            sum_price = price * food['amount']
            curFood.amount -= food['amount']
            curFood.save()

            food_amount += food['amount']
            total_price += sum_price

            OrderItem.objects.create(
                orderID=new_order,
                foodID=curFood,
                amount=food['amount'],
                sum_price=sum_price
            )
        # 订单的物品总数、总价
        new_order.food_amount = food_amount
        new_order.total_price = total_price
        new_order.save()

        return HttpResponse(json.dumps({
            'order_id': order_id
        }))


# 账单详情页
def QueryOrder(request, order_id):
    try:
        order = Order.objects.get(pk=order_id)
    except:
        return HttpResponse('无此订单!')

    foodList = Food.objects.filter(orderitem__orderID__ID=order_id)

    with connection.cursor() as cursor:
        SELECT_COL = 'OrderSystem_food.ID ID, OrderSystem_food.title title, OrderSystem_orderitem.amount amount'
        SELECT_COL += ', OrderSystem_orderitem.sum_price '
        SELECT_COL += ', OrderSystem_orderitem.start_cook_time '
        SELECT_COL += ', OrderSystem_orderitem.end_cook_time '
        SELECT_FROM = 'OrderSystem_food, OrderSystem_orderitem '
        SELECT_WHERE = 'OrderSystem_food.ID=OrderSystem_orderitem.foodID_id '
        SELECT_WHERE += ' and OrderSystem_orderitem.orderID_id={0}'.format(
            order_id)
        cursor.execute(
            f'select {SELECT_COL} from {SELECT_FROM} where {SELECT_WHERE}')
        foodJsonList = dictfetchall(cursor)#封装成字典

    return render(request, 'QueryOrder.html', {
        'order': order,
        'foodList': foodJsonList,
    })


# 待结账页面
def CheckUnpaidOrder(request):
    # 查询当前未结账订单
    orderList = []
    with connection.cursor() as cursor:
        SELECT_COL = 'ID, create_time, table_id, total_price'
        SELECT_FROM = 'OrderSystem_order'
        SELECT_WHERE = 'is_pay=0'   # 0 false
        SELECT = f'select {SELECT_COL} from {SELECT_FROM} where {SELECT_WHERE}'
        cursor.execute(SELECT)
        orderList = dictfetchall(cursor)
        print(orderList)

    return render(request, 'CheckUnpaidOrder.html', {
        'orderList': orderList,
    })


# 结账
@csrf_exempt
def CheckOut(request):
    if request.method == "POST":
        order_list = json.loads(request.POST.get('order_list'))
        print(order_list)
        for order_data in order_list:
            print(order_data)
            order_id = order_data['order_id']
            is_pay = order_data['is_pay']

            if is_pay:
                order = Order.objects.get(pk=order_id)
                if order.is_pay == True:
                    print("已经支付!")
                    return HttpResponse(json.dumps({
                        'status': 'ALREADY_PAY'
                    }))

                order.is_pay = True
                order.pay_time = datetime.datetime.now()
                order.save()
            else:
                return HttpResponse(json.dumps({
                    'status': 'NO_PAY'
                }))

        return HttpResponse(json.dumps({
            'status': 'OK'
        }))


@login_required
def manage(request):
    staffList = Staff.objects.all()
    # (餐桌号 + 餐桌名字 + 负责人ID + 负责人姓名)
    tableInfoList = []
    with connection.cursor() as cursor:
        SELECT_COL = ' distinct {0}_staff_table.ID table_id '#桌子id
        SELECT_COL += ', {0}_staff_table.name table_name '#桌子名字
        SELECT_COL += ', {0}_staff.ID staff_id '
        SELECT_COL += ', {0}_staff.name staff_name '
        SELECT_COL = SELECT_COL.format('OrderSystem')

        SELECT_FROM = '{0}_staff_table, {0}_staff '
        SELECT_FROM = SELECT_FROM.format('OrderSystem')

        SELECT_WHERE = '{0}_staff.ID = {0}_staff_table.staff_id '
        SELECT_WHERE = SELECT_WHERE.format('OrderSystem')

        SELECT_SQL = f'select {SELECT_COL} from {SELECT_FROM} where {SELECT_WHERE}'
        cursor.execute(SELECT_SQL)

        tableInfoList = dictfetchall(cursor)

    return render(request, 'manage.html', {
        'tableInfoList': tableInfoList,
        'staffList': staffList,
        'user':request.user,
    })


@csrf_exempt
def getServingTableList(request):
     # (餐桌号 + 餐桌名字 + 负责人ID + 负责人姓名)
    servingTableList = []
    with connection.cursor() as cursor:
        SELECT_COL = 'distinct {0}_order.table_id table_id '
        SELECT_COL = SELECT_COL.format('OrderSystem')

        SELECT_FROM = '{0}_order '
        SELECT_FROM = SELECT_FROM.format('OrderSystem')

        SELECT_WHERE = '{0}_order.is_pay = 0 '  # false 0
        SELECT_WHERE = SELECT_WHERE.format('OrderSystem')

        SELECT_SQL = f'select {SELECT_COL} from {SELECT_FROM} where {SELECT_WHERE}'
        SELECT_SQL += 'order by table_id'
        cursor.execute(SELECT_SQL)

        servingTableInfoList = dictfetchall(cursor)
        for tableInfo in servingTableInfoList:
            servingTableList.append(tableInfo['table_id'])

    return HttpResponse(json.dumps({
        'servingTableList': servingTableList,
    }))


@csrf_exempt
def getOrderItemList(request):
    if request.method == "POST":
        # 没有指定 order_id 就返回所有 order_item
        order_id = request.POST.get('order_id')

        with connection.cursor() as cursor:
            SELECT_COL = '{0}orderitem.orderID_id order_id '
            SELECT_COL += ',{0}order.table_id table_id '
            SELECT_COL += ',{0}orderitem.foodID_id food_id '
            SELECT_COL += ',{0}food.title food_name '
            SELECT_COL += ',{0}orderitem.amount food_amount '
            SELECT_COL += ',{0}orderitem.status status '
            SELECT_COL = SELECT_COL.format('OrderSystem_')

            SELECT_FROM = '{0}orderitem, {0}food, {0}order '
            SELECT_FROM = SELECT_FROM.format('OrderSystem_')

            SELECT_WHERE = 'food_id = {0}food.ID '
            SELECT_WHERE += ' and {0}order.ID = order_id '
            SELECT_WHERE += ' and {0}order.is_pay = 0 '
            SELECT_WHERE += (' and order_id=' +
                             order_id) if order_id != None else ''
            SELECT_WHERE = SELECT_WHERE.format('OrderSystem_')

            SELECT_SQL = f'select {SELECT_COL} from {SELECT_FROM} where {SELECT_WHERE}'
            SELECT_SQL += 'order by table_id'
            cursor.execute(SELECT_SQL)

            orderItemList = dictfetchall(cursor)

            return HttpResponse(json.dumps(orderItemList))


# 更新餐桌表 中的 staff
@csrf_exempt
def set_staff_charge_table(request):
    if request.method == "POST":
        table_id = request.POST.get("table_id")
        staff_id = request.POST.get("staff_id")
        try:
            Staff_Table.objects.filter(pk=table_id).update(staff_id=staff_id)
            return HttpResponse(json.dumps({
                'status': "OK"
            }))
        except:
            return HttpResponse(json.dumps({
                'status': "FAIL"
            }))


# 上菜
@csrf_exempt
def delive_food(request):
    if request.method == "POST":
        order_id = request.POST.get("order_id")
        food_id = request.POST.get("food_id")
        OrderItem.objects.filter(
            orderID_id=order_id, foodID_id=food_id).update(status=3)
        try:
            return HttpResponse(json.dumps({
                'status': "OK"
            }))
        except:
            return HttpResponse(json.dumps({
                'status': "FAIL"
            }))


# 后厨
@login_required#标识一个视图可以被跨域访问
def food_supplier(request):
    return render(request, 'FoodSupplier.html')


# 后厨接口 接单or完成
@csrf_exempt
def cook(request):
    if request.method == "POST":
        OP = request.POST.get("OP")
        order_id = request.POST.get("order_id")
        food_id = request.POST.get("food_id")

        orderItem = OrderItem.objects.filter(
            orderID_id=order_id, foodID_id=food_id)

        target_status = 1 if OP == "take_order" else 2

        if(OP == "take_order"):
            orderItem.update(status=1)
            orderItem.update(start_cook_time=datetime.datetime.now())
        else:
            orderItem.update(status=2)
            orderItem.update(end_cook_time=datetime.datetime.now())

        orderItem.save()

        return HttpResponse(json.dumps({
            'status': 'OK',
        }))


def dictfetchall(cursor):
    '''辅助函数 数据库查询结果转换成 json/dict'''
    columns = [col[0] for col in cursor.description]
    return [
        dict(zip(columns, row))
        for row in cursor.fetchall()
    ]


###############################################################
#
#    管理
#
###############################################################


def orders(request):
    orders = Order.objects.all()
    return render(request, 'manage/orders.html', {
        'orders': orders,
    })
@csrf_exempt
def staffs(request):
    if request.method=="GET":
        form = forms.StaffForm()
        staffs = Staff.objects.all()
        return render(request, 'manage/staffs.html', {
            'form': form,
            'staffs': staffs,
        })
    elif request.method == "POST":
        name=request.POST.get('name')
        SELECT_COL = '*'
        SELECT_FROM='OrderSystem_staff'
        SELECT_WHERE='OrderSystem_staff.name like'+ "'%"+name+ "%'"
        SELECT_SQL = f'select {SELECT_COL} from {SELECT_FROM} where {SELECT_WHERE}'
        print(SELECT_SQL,"SQL")
        with connection.cursor() as cursor:
            cursor.execute(SELECT_SQL)
            staffs = dictfetchall(cursor)
        print(staffs, "SQL_res")
        form = forms.StaffForm()
        #staffs = Staff.objects.all()
        return render(request, 'manage/staffs.html', {
            'form': form,
            'staffs': staffs,
        })
        # form_back = forms.StaffForm(request.POST)
        # if form_back.is_valid():
        #     form_back.save()
        #     return HttpResponse(json.dumps({
        #         'status': 'OK',
        #     }))
        # else:
        #     print(form_back.errors.as_data())
        #     print(form_back.errors.as_json())
        #     print(form_back.errors.as_text())
        #     print(form_back.errors.as_ul())
        #     return HttpResponse(json.dumps({
        #         'status': 'FAIL',
        #     }))
@csrf_exempt
def tables(request):
    print(request.body)
    print(request.method,"method")
    if request.method == "GET":
        form = forms.Staff_TableForm()
        with connection.cursor() as cursor:
            SELECT_COL = ' distinct {0}_staff_table.ID table_id '
            SELECT_COL += ', {0}_staff_table.name table_name '
            SELECT_COL += ', {0}_staff.ID staff_id '
            SELECT_COL += ', {0}_staff.name staff_name '
            SELECT_COL = SELECT_COL.format('OrderSystem')

            SELECT_FROM = '{0}_staff_table, {0}_staff '
            SELECT_FROM = SELECT_FROM.format('OrderSystem')

            SELECT_WHERE = '{0}_staff.ID = {0}_staff_table.staff_id '
            SELECT_WHERE = SELECT_WHERE.format('OrderSystem')

            SELECT_SQL = f'select {SELECT_COL} from {SELECT_FROM} where {SELECT_WHERE}'
            cursor.execute(SELECT_SQL)

            tables = dictfetchall(cursor)
            #print(tables,"table")
        with connection.cursor() as cursor:



            cursor.execute(
                'select ID staff_id, name staff_name from OrderSystem_staff;')
            staffs = dictfetchall(cursor)
        print('GET')
        #print(staffs,"staffs")
        return render(request, 'manage/tables.html', {
            'form': form,
            'tables': tables,
            'staffs': staffs,
        })
    else:
        name = request.POST.get('table_name')


        with connection.cursor() as cursor:
            SELECT_COL = ' distinct {0}_staff_table.ID table_id '
            SELECT_COL += ', {0}_staff_table.name table_name '
            SELECT_COL += ', {0}_staff.ID staff_id '
            SELECT_COL += ', {0}_staff.name staff_name '
            SELECT_COL = SELECT_COL.format('OrderSystem')

            SELECT_FROM = '{0}_staff_table, {0}_staff '
            SELECT_FROM = SELECT_FROM.format('OrderSystem')

            SELECT_WHERE = '{0}_staff.ID = {0}_staff_table.staff_id AND {0}_staff_table.name like '
            SELECT_WHERE +=  "'%"+name+ "%'"
            SELECT_WHERE = SELECT_WHERE.format('OrderSystem')

            SELECT_SQL = f'select {SELECT_COL} from {SELECT_FROM} where {SELECT_WHERE}'
            cursor.execute(SELECT_SQL)
            print(SELECT_SQL, "SQL")
            tables = dictfetchall(cursor)
        print(tables, "SQL_res")
        form = forms.Staff_TableForm()
        # staffs = Staff.objects.all()
        return render(request, 'manage/tables.html', {
            'form': form,
            'tables': tables,
           # 'staffs': staffs,
        })
@csrf_exempt
def add_tables(request):
    if request.method == 'GET':
        form = forms.Staff_TableForm()
        table=Staff_Table.objects.all()
        return render(request,'manage/add_tables.html',{
            'form': form,
        })
    else:
        form_back = forms.Staff_TableForm(request.POST)
        if form_back.is_valid():
            data = form_back.cleaned_data
            form_back.save()
            print("OK")
            return redirect('/manage/tables')
        else:
            print(form_back.errors.as_data())
            print(form_back.errors.as_json())
            print(form_back.errors.as_text())
            print(form_back.errors.as_ul())
            return HttpResponse(json.dumps({
               'Fail To Add': 'The table number already exists, please modify it',
            }),)
def update_tables(request):
    if request.method == 'GET':
        form = forms.Staff_TableForm()
        ID = request.GET.get('id')
        tables_obj = Staff_Table.objects.get(ID=ID)
        return render(request, 'manage/update_tables.html', {
            'form': form,
            'table': tables_obj
        })
    else:
        ID = request.POST.get('ID')
        print(ID,'ID')
        table_obj = Staff_Table.objects.get(ID=ID)
        table_obj_all = Staff_Table.objects.all()
        table_obj.ID = request.POST.get('ID')
        table_obj.name = request.POST.get('name')
        table_obj.staff_id = request.POST.get('staff')
        table_obj.save()
        return redirect('/manage/tables')





@csrf_exempt
def foods(request):
    if request.method == "GET":
        foods = Food.objects.all()
        food_types = Foodtype.objects.all()
        food_form = forms.FoodForm()
        food_type_form = forms.FoodtypeForm()
        return render(request, 'manage/foods.html', {
            'food_form': food_form,
            'food_type_form': food_type_form,
            'foods': foods,
            'food_types': food_types,
        })
    elif request.method == "POST":
        try:
            name = request.POST.get('foods_name')
            SELECT_COL = '*'
            SELECT_FROM = 'OrderSystem_food'
            SELECT_WHERE = 'OrderSystem_food.title like ' + "'%"+name+ "%'"

            SELECT_SQL = f'select {SELECT_COL} from {SELECT_FROM} where {SELECT_WHERE}'

            food_types = Foodtype.objects.all()
            print(SELECT_SQL, "SQL")

            with connection.cursor() as cursor:
                cursor.execute(SELECT_SQL)
                foods = dictfetchall(cursor)
        except:
            name=request.POST.get('foods_type_name')
            SELECT_COL = '*'
            SELECT_FROM = 'OrderSystem_foodtype'
            SELECT_WHERE = 'OrderSystem_foodtype.name like' + "'%"+name+ "%'"
            SELECT_SQL = f'select {SELECT_COL} from {SELECT_FROM} where {SELECT_WHERE}'

            foods = Food.objects.all()
            print(SELECT_SQL, "SQL")
            with connection.cursor() as cursor:
                cursor.execute(SELECT_SQL)
                food_types = dictfetchall(cursor)
        print(foods, "SQL_res")


        food_form = forms.FoodForm()
        food_type_form=forms.FoodtypeForm
        # staffs = Staff.objects.all()
        return render(request, 'manage/foods.html', {
            'food_form': food_form,
            'food_type_form': food_type_form,
            'foods': foods,
            'food_types': food_types,
        })
@csrf_exempt
def add_foodtype(request):
    if request.method == 'GET':
        food_type_form = forms.FoodtypeForm
        return render(request,'manage/add_foodtype.html',{
            'food_type_form': food_type_form,
        })
    else:

        form_foodtype = forms.FoodtypeForm(request.POST)
        if form_foodtype.is_valid():
            data = form_foodtype.cleaned_data
            form_foodtype.save()
            return redirect('/manage/foods')
def update_foodtype(request):
    if request.method == 'GET':
        food_type_form = forms.FoodtypeForm
        ID = request.GET.get('id')
        foodtype_obj = Foodtype.objects.get(ID=ID)
        return render(request,'manage/update_foodtype.html',{
            'food_type_form': food_type_form,
            'foodtype_obj':foodtype_obj
        })
    else:
        ID = request.POST.get('ID')
        foodtype_obj = Foodtype.objects.get(ID=ID)
        foodtype_obj.name=request.POST.get('name')
        foodtype_obj.save()
        return redirect('/manage/foods')

@csrf_exempt
def update_foods(request):
    if request.method == 'GET':
        ID = request.GET.get('id')
        food_form = forms.FoodForm()
        foods_obj = Food.objects.get(ID=ID)
        return render(request, 'manage/update_foods.html', {
            'foods_obj': foods_obj,
            'food_form': food_form,
        })
    else:
        ID = request.POST.get('ID')
        foods_obj = Food.objects.get(ID=ID)
        foods_obj.title = request.POST.get("title")
        foods_obj.amount = request.POST.get("amount")
        foods_obj.price = request.POST.get("price")
        foods_obj.cost_time = request.POST.get("cost_time")
        foods_obj.foodType_id = request.POST.get("foodType")
        foods_obj.save()
        return redirect('/manage/foods')
def add_foods(request):
    if request.method == 'GET':
        food_form = forms.FoodForm()
        return render(request, 'manage/add_foods.html', {
            'food_form': food_form,
        })

    else:
        form_food = forms.FoodForm(request.POST)
        if form_food.is_valid():
            data = form_food.cleaned_data
            form_food.save()
            return redirect('/manage/foods')


@csrf_exempt
#员工 增加
def add_staffs(request):
    if request.method=="GET":
        return render(request,'manage/add_staffs.html')
    elif request.method == "POST":
        form_back = forms.StaffForm(request.POST)
        import re

       # print(,"phone")
        #print(form_back,"citizenID")
        ret = re.match(r"^1[35678]\d{9}$", form_back.data['phone'])
        if ret:
            print("匹配成功")
            r = r'^([1-9]\d{5}[12]\d{3}(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])\d{3}[0-9xX])$'
            ret = re.match(r, form_back.data['citizenID'])
            if ret:
                if form_back.is_valid():
                    form_back.save()

                    form = forms.StaffForm()
                    staffs = Staff.objects.all()
                    return render(request, 'manage/staffs.html', {
                        'form': form,
                        'staffs': staffs,
                    })
                else:
                    print(form_back.errors.as_data())
                    print(form_back.errors.as_json())
                    print(form_back.errors.as_text())
                    print(form_back.errors.as_ul())
                    return HttpResponse(json.dumps({
                        'status': 'FAIL',
                    }))
            else:
                return HttpResponse(json.dumps({
                    'citizenID': 'error!',
                }))
        else:
            return HttpResponse(json.dumps({
                'phone': 'error!',
            }))




@csrf_exempt
#员工 删除
def dark(request):
    if request.method == "POST":
        target = request.POST

        table = target['table']
        SQL = ''
        if target['double'] == 'false':
            ID = target['id']
            SQL += f'delete from OrderSystem_{table} where ID={ID}'
        elif target['double'] == 'true':
            foodID_id = target['foodID_id']
            orderID_id = target['orderID_id']
            SQL += f'delete from OrderSystem_{table} where foodID_id={foodID_id} and orderID_id={orderID_id}'

        print('========================================================================')
        print(SQL)
        print('========================================================================')

        try:
            with connection.cursor() as cursor:
                cursor.execute(SQL)
                print("True")
                return HttpResponse(json.dumps({
                    'status': 'OK',
                }))
        #     return render(request, 'manage/staffs.html', {
        #     'status': json.dumps([1,1])
        # })
        except:
            print("False")
            # return render(request, 'manage/staffs.html', {
            #     'status': json.dumps([0,0])
            # })
            return HttpResponse(json.dumps({
               'status': 'FAIL',
           }))
#员工更新
@csrf_exempt
def update_staffs(request):
    if request.method=='GET':
        ID=request.GET.get('id')
        staffs_obj=Staff.objects.get(ID=ID)
        return render(request, 'manage/update_staffs.html', {
            'staffs': staffs_obj,
        })
    else :
        ID=request.POST.get('ID')
        citizenID=request.POST.get('citizenID')
        name = request.POST.get('name')
        gender = request.POST.get('gender')
        born_date = request.POST.get('born_date')
        phone = request.POST.get('phone')






        address = request.POST.get('address')
        staff_obj=Staff.objects.get(ID=ID)

        staff_obj.name=name
        staff_obj.citizenID = citizenID
        staff_obj.gender = gender
        staff_obj.born_date = born_date
        staff_obj.phone = phone
        staff_obj.address = address

        import re

        # print(,"phone")
        # print(form_back,"citizenID")
        ret = re.match(r"^1[35678]\d{9}$", phone)
        if ret:
            print("匹配成功")
            r = r'^([1-9]\d{5}[12]\d{3}(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])\d{3}[0-9xX])$'
            ret = re.match(r, citizenID)
            if ret:
               staff_obj.save()
               return redirect('/manage/staffs')
            else:
                return HttpResponse(json.dumps({
                    'citizenID': 'error!',
                }))
        else:
            return HttpResponse(json.dumps({
                'phone': 'error!',
            }))



           # staffs = dictfetchall(cursor)



    #return render(request, 'manage/update_staffs.html')
    #return render(request,'update_staffs.html')

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

相关文章:

  • PCIe序与死锁
  • npm 和 yarn 命令对照表
  • Springboot整合ES8(Java API Client)
  • GB/T 28181联网系统通信协议结构和技术实现
  • 使用 Spark Java 框架构建 API
  • 【文献导读】XPBD: Position-Based Simulation of Compliant Constrained Dynamics
  • 直流有刷电机转速、电流双闭环调速系统及Matlab/Simulink仿真分析
  • 诡异错误 Unresolved reference: styleable
  • exception错误处理库学习
  • 蔚来、小鹏、吉利走到了跨界分叉口
  • 神卓互联SDWAN技术实现异地组网办公(无需硬件)
  • Redis分布式锁(下篇)
  • Vue--整合SVG Icon图标--方法/实例
  • STC15单片机-整合代码,完成软件设计
  • 直流有刷电机调速原理及Matlab/Simulink仿真
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • HTTP请求重发
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • Spark RDD学习: aggregate函数
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • 开源地图数据可视化库——mapnik
  • 每天10道Java面试题,跟我走,offer有!
  • 面试遇到的一些题
  • 你真的知道 == 和 equals 的区别吗?
  • 前端技术周刊 2018-12-10:前端自动化测试
  • 前言-如何学习区块链
  • 说说动画卡顿的解决方案
  • 写给高年级小学生看的《Bash 指南》
  • 译自由幺半群
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • 【干货分享】dos命令大全
  • const的用法,特别是用在函数前面与后面的区别
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • #includecmath
  • #NOIP 2014# day.1 生活大爆炸版 石头剪刀布
  • $.ajax()
  • $.ajax()参数及用法
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • (附源码)ssm高校社团管理系统 毕业设计 234162
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (九)信息融合方式简介
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (循环依赖问题)学习spring的第九天
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • .net mvc部分视图
  • .net 微服务 服务保护 自动重试 Polly
  • .NET 应用架构指导 V2 学习笔记(一) 软件架构的关键原则
  • .net知识和学习方法系列(二十一)CLR-枚举