基于 django(爱抚宠物) 小程序设计和实现 (源码 +LW+ 部署讲解)
感兴趣的可以先收藏起来,大家在毕设选题,项目以及论文编写等相关问题都可以给我加好友咨询
系统介绍:
科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代。在现实运用中,应用软件的工作规则和开发步骤,采用 Python 技术建设基于 Pettingpets(爱抚宠物)小程序。
本设计主要实现集人性化、高效率、便捷等优点于一身的基于 Pettingpets(爱抚宠物)小程序,完成宠物类型、宠物信息、领养信息、救助基地、捐助信息、留言反馈、消息通知、宠物日常等功能模块。系统通过浏览器与服务器进行通信,实现数据的交互与变更。本系统通过科学的管理方式、便捷的服务提高了工作效率,减少了数据存储上的错误和遗漏。基于 Pettingpets(爱抚宠物)小程序使用 Python 语言,采用基于 MVVM 模式的 Django 技术进行开发,使用 Eclipse 2017 CI 10 编译器编写,数据方面主要采用的是微软的 MySQL 关系型数据库来作为数据存储媒介,配合前台 HTML+CSS 技术完成系统的开发。
关键词:爱抚宠物;Django 技术
在上一章节中主要对系统的功能性需求和非功能性需求进行分析,并且根据需求分析了本 Pettingpets(爱抚宠物)小程序中的用例。那么接下来就要开始对本 Pettingpets(爱抚宠物) 小程序的架构、主要功能和数据库开始进行设计。Pettingpets(爱抚宠物)小程序根据前面章节的需求分析得出,其总体设计模块图如图 3-1 所示。
下面是整个 Pettingpets(爱抚宠物) 小程序中主要的数据库表总 E-R 实体关系图。
程序上交给用户进行使用时,需要提供程序的操作流程图,这样便于用户容易理解程序的具体工作步骤,现如今程序的操作流程都有一个大致的标准,即先通过登录页面提交登录数据,通过程序验证正确之后,用户才能在程序功能操作区页面操作对应的功能。
程序操作流程图
功能截图:
代码实现:
/**
登录相关*/@RequestMapping("users")@RestControllerpublic class UserController{
@Autowiredprivate UserService userService;
@Autowiredprivate TokenService tokenService;
/**
登录*/@IgnoreAuth@PostMapping(value = "/login")public R login(String username, String password, String role, HttpServletRequest request) {UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));if(user != null){if(!user.getRole().equals(role)){return R.error("权限不正常");}if(user==null || !user.getPassword().equals(password)) {return R.error("账号或密码不正确");}String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());return R.ok().put("token", token);}else{return R.error("账号或密码或权限不对");}
}
/**
注册*/@IgnoreAuth@PostMapping(value = "/register")public R register(@RequestBody UserEntity user){// ValidatorUtils.validateEntity(user);if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {return R.error("用户已存在");}userService.insert(user);return R.ok();}
/**
退出*/@GetMapping(value = "logout")public R logout(HttpServletRequest request) {request.getSession().invalidate();return R.ok("退出成功");}
/**
密码重置*/@IgnoreAuth@RequestMapping(value = "/resetPass")public R resetPass(String username, HttpServletRequest request){UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));if(user==null) {return R.error("账号不存在");}user.setPassword("123456");userService.update(user,null);return R.ok("密码已重置为:123456");}
/**
列表*/@RequestMapping("/page")public R page(@RequestParam Map<String, Object> params,UserEntity user){EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));return R.ok().put("data", page);}
/**
信息*/@RequestMapping("/info/{id}")public R info(@PathVariable("id") String id){UserEntity user = userService.selectById(id);return R.ok().put("data", user);}
/**
获取用户的 session 用户信息*/@RequestMapping("/session")public R getCurrUser(HttpServletRequest request){Integer id = (Integer)request.getSession().getAttribute("userId");UserEntity user = userService.selectById(id);return R.ok().put("data", user);}
/**
保存*/@PostMapping("/save")public R save(@RequestBody UserEntity user){// ValidatorUtils.validateEntity(user);if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {return R.error("用户已存在");}userService.insert(user);return R.ok();}
/**
修改*/@RequestMapping("/update")public R update(@RequestBody UserEntity user){// ValidatorUtils.validateEntity(user);userService.updateById(user);//全部更新 return R.ok();}
/**
删除*/@RequestMapping("/delete")public R delete(@RequestBody Integer[] ids){userService.deleteBatchIds(Arrays.asList(ids));return R.ok();}}
评论