1、views.py中

from django.shortcuts import render,redirect,HttpResponse

# Create your views here.

from django.contrib import auth

def login(request):

if request.method=="POST":

user=request.POST.get("user")

pwd=request.POST.get("pwd")

user=auth.authenticate(username=user,password=pwd)

if user:

auth.login(request,user) # request.user

return redirect("/index/")

return render(request,"login.html")

from .models import *

import datetime

def index(request):

date=datetime.datetime.now().date()

book_date=request.GET.get("book_date",date)

print("book_date",book_date)

time_choices=Book.time_choices

room_list=Room.objects.all()

book_list=Book.objects.filter(date=book_date)

print("time_choices",time_choices)

htmls=""

for room in room_list:

htmls+="

{}({})".format(room.caption,room.num)

for time_choice in time_choices:

book=None

flag=False

for book in book_list:

if book.room.pk==room.pk and book.time_id==time_choice[0]:

#意味这个单元格已被预定

flag=True

break

if flag:

if request.user.pk==book.user.pk:

htmls += "{}".format(room.pk, time_choice[0],book.user.username)

else:

htmls += "{}".format(room.pk, time_choice[0],

book.user.username)

else:

htmls+="".format(room.pk,time_choice[0])

htmls+=""

# print(htmls)

return render(request,"index.html",locals())

import json

def book(request):

# print("request.POST",request.POST)

post_data=json.loads(request.POST.get("post_data")) # {"ADD":{"1":["5"],"2":["5","6"]},"DEL":{"3":["9","10"]}}

# print("post_data", post_data)

choose_date=request.POST.get("choose_date")

res={"state":True,"msg":None}

try:

# 添加预定

#post_data["ADD"] : {"1":["5"],"2":["5","6"]}

book_list=[]

for room_id,time_id_list in post_data["ADD"].items():

for time_id in time_id_list:

book_obj=Book(user=request.user,room_id=room_id,time_id=time_id,date=choose_date)

book_list.append(book_obj)

Book.objects.bulk_create(book_list)

# 删除预定

from django.db.models import Q

# post_data["DEL"]: {"2":["2","3"]}

# print("post_data['DEL']:", post_data["DEL"].items())

remove_book = Q()

for room_id,time_id_list in post_data["DEL"].items():

temp = Q()

for time_id in time_id_list:

temp.children.append(("room_id",room_id))

temp.children.append(("time_id",time_id))

temp.children.append(("user_id",request.user.pk))

temp.children.append(("date",choose_date))

remove_book.add(temp,"OR")

if remove_book:

Book.objects.filter(remove_book).delete()

except Exception as e:

res["state"]=False

res["msg"]=str(e)

return HttpResponse(json.dumps(res))

2、HTML

Index

酒店房间预定

房间/时间

{% for time_choice in time_choices %}

{{ time_choice.1 }}

{% endfor %}

{{ htmls|safe }}

保存

3、model.py中

from django.db import models

# Create your models here.

from django.db import models

from django.contrib.auth.models import AbstractUser

class UserInfo(AbstractUser):

tel=models.CharField(max_length=32)

class Room(models.Model):

"""

会议室表

"""

caption = models.CharField(max_length=32)

num = models.IntegerField() # 容纳人数

def __str__(self):

return self.caption

class Book(models.Model):

"""

会议室预定信息

"""

user = models.ForeignKey('UserInfo',on_delete=models.CASCADE)

room = models.ForeignKey('Room',on_delete=models.CASCADE)

date = models.DateField()

time_choices = (

(1, '8:00'),

(2, '9:00'),

(3, '10:00'),

(4, '11:00'),

(5, '12:00'),

(6, '13:00'),

(7, '14:00'),

(8, '15:00'),

(9, '16:00'),

(10, '17:00'),

(11, '18:00'),

(12, '19:00'),

(13, '20:00'),

)

time_id = models.IntegerField(choices=time_choices)

class Meta:

unique_together = (

('room','date','time_id'),

)

def __str__(self):

return str(self.user)+"预定了"+str(self.room)

里面用到一个日历插件datetimepicker

效果图

python会议室系统预定_python项目篇-酒店(会议室,电影)预定相关推荐

  1. [转载] python的系统模块_Python操作系统模块

    参考链接: 带有示例的Python中的OS模块 python的系统模块 Python OS module provides easy functions that allow us to intera ...

  2. python的系统模块_Python操作系统模块

    python的系统模块 Python OS module provides easy functions that allow us to interact and get Operating Sys ...

  3. 多媒体会议室系统有哪些功能,小型会议室系统解决方案

    2019年,预计会议协作需求将持续增长,创建多功能会议室促进本地.异地协作仍然是一个强大的趋势.无论空间大小或距离远近,政府部门.企业单位以及团体组织为了实现决策指令畅通.管理层次分明,需要通过对会议 ...

  4. python项目篇-酒店(会议室,电影)预定

    1.views.py中 from django.shortcuts import render,redirect,HttpResponse# Create your views here.from d ...

  5. python嵌入式系统开发_Python在嵌入式项目中辅助开发.PDF

    22 SYSPRACTICE 系统实践 on在嵌入式项目中的辅助开发 Pyth 彭树林 摘要:嵌入式系统设计开发过程中常会遇到诸如算法分析.原型验证.自动化测试.辅助工具设计等工作,其 开发效率和质量 ...

  6. python外星人实验报告_Python 项目实践一(外星人入侵)第一篇

    python断断续续的学了一段实践,基础课程终于看完了,现在跟着做三个小项目,第一个是外星人入侵的小游戏: 一 Pygame pygame 是一组功能强大而有趣的模块,可用于管理图形,动画乃至声音,让 ...

  7. python学生管理系统教学_Python项目:学生信息管理系统(完整版)

    本文是基于上一篇(python项目:学生信息管理系统(初版))进行了完善,并添加了新的功能. 主要包括有: 学生信息管理系统(完整版) 学生信息管理项目,要求带操作界面,并完成每项操作: +----- ...

  8. python 自动编写新闻_Python多篇新闻自动采集

    昨天用python写了一个天气预报采集,今天趁着兴头写个新闻采集的. 目标是,将腾讯新闻主页上所有新闻爬取下来,获得每一篇新闻的名称.时间.来源以及正文. 接下来分解目标,一步一步地做. 步骤1:将主 ...

  9. python嵌入式系统开发_python能开发单片机吗

    Python已经逐渐成为热门编程语言的"座上宾",同时它也是一款比较容易上手的脚本语言,而且有强大的社区支持,一些非计算机专业领域的人都选它作为入门语言. 因此也就出现了将Pyth ...

最新文章

  1. java 注解 payload_spring – 如何使用注释配置PayloadValidatingInterceptor
  2. 日常开发技巧:使用notify-send发送通知
  3. wxWidgets:wxAuiManager类用法
  4. SegmentFault 高阳:从开发者到创业者
  5. 论文浅尝 - COLING2020 | 一种用于跨语言实体对齐的上下文对齐强化跨图谱注意力网络...
  6. Chap-4 Section 4.2.4 指令修正方式
  7. CentOS 7添加开机启动服务脚本
  8. 2017.6.27 跟开涛学spring3--spring概述
  9. layui生产管理系统_ssm开发生产制造业MES系统源码
  10. 重做《机房收费系统》——概要设计(UI)
  11. 使用Python对Syslog信息进行分析并绘图
  12. Java(38)_BorderLayout布局
  13. 2.ELK stack 集群 搭建
  14. C语言开定时器做呼吸灯程序,单片机制作呼吸灯的C语言程序怎么样编写
  15. 数数(数学题运算分配律)
  16. 解决Photoshop CS3 输入中文不能显示 输入文字不能显示 输入文字显示缓慢
  17. 测评 | 谷歌智能耳机Pixel Buds体验:耳朵里的语音助手
  18. Spring的sessionFactory配置详解
  19. 怎样剪切视频中的一段音频
  20. linux下面ps命令,Linux下修改后的ps命令,很好很强大!

热门文章

  1. 如何在Linux上安装Composer
  2. Security:CSRF
  3. mysql innodb 并发 插入 慢_Innodb 锁机制——一次插入慢查询的排查
  4. java基础学不会_java基础
  5. java中oriqinal_Java集合10 (NavigableMap)
  6. java截取字符串拼接_java截取字符串并拼接
  7. oracle12c双机热备方案,Oracle 共享磁盘阵列 双机热备 实战 配置教程 配置手册
  8. c5.0 java_机器学习-AdaBoosting及其Java实现
  9. mysql的原理图解_MySQL排序工作原理
  10. 多少人举报才封手机号_一个人赚多少钱,才敢回家过年?