热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

flask+pymongo的留言板

最近嗜睡又不想睡,然后下午翘了课,睡了一大觉,终于可以来完结这个又简单也算实用的小留言板了。1.首先是数据库吧(原谅一下我糟糕的命名方式)1classLeave:2d

最近嗜睡又不想睡,然后下午翘了课,睡了一大觉,终于可以来完结这个又简单也算实用的小留言板了。

1.首先是数据库吧(原谅一下我糟糕的命名方式)

 1 class Leave:
 2     db = MongoClient().Doo.Leave
 3 
 4     def __init__(self, name, words):
 5         self.name = name
 6         self.words = words
 7 
 8     def new_word(self):
 9         collection = {
10             'name': self.name,
11             'words': self.words,
12             'words_since': datetime.utcnow()
13         }
14         self.db.insert_one(collection)

Mongodb是一个用的时候才建的数据,这一点我之前说过了。突然想起之前想处理的flask-migrate,可能要等我学mysql的时候才能用的上了,或者postgresql的时候。flask-sqlalchemy是一个很棒的东西,配合flask用很合适,可以找到的资料会相对多一点。

2.Form

1 class LeaveForm(Form):
2     name = StringField('留言人')
3     words = TextAreaField('留言', validators=[DataRequired()])
4     submit = SubmitField('确定')

3.Views(我的文件结构处理得很不好,以后可能会改一下)

1 @main.route('/leave', methods=['GET', 'POST'])
2 def leave():
3     leave_word = MongoClient().Doo.Leave.find().sort('words_since', DESCENDING)
4     form = LeaveForm()
5     if form.validate_on_submit():
6         Leave(name=form.name.data,
7               words=form.words.data).new_word()
8         return redirect(url_for('.leave'))
9     return render_template('leave.html', leave=leave_word, form=form)

这里的url_for之前我忘了用redirect,然后跳转页面就变成/leave,整个页面只有'/leave'。sort的DESCENDING是要从pymongo中引入的,简单一点可以直接用-1就好,因为我是想让留言按时间逆序显示,注意这里的leave是之后模板用到的数据。

4.html

 1 {% extends "base.html" %}
 2 {% block head %}
 3     <link rel="stylesheet" href="{{ url_for('static', filename='css/leave.css') }}" type="text/css">
 4 {% endblock %}
 5 {% block body %}
 6 <div class="col-lg-12 lala">
 7 <h3>新留言h3>
 8 <form method="POST">
 9     {{ form.hidden_tag() }}
10     <div class="form-group">
11         {{ form.name.label }}
12         {{ form.name(class_='form-control') }}
13     div>
14     <div class="form-group">
15         {{ form.words.label }}
16         {{ form.words(class_='form-control') }}
17     div>
18     {{ form.submit(class="btn btn-primary") }}
19 form>
20 {% for lea in leave %}
21 <div class="content">
22     <div class="info">
23         <h4 class="user">By {{ lea.get('name') }}h4>
24         <h4 class="time">{{ lea.get('words_since').strftime('%Y-%m-%d %H:%M:%S') }}h4>
25     div>
26 
27     <div class="con">{{ lea.get('words') }}div>
28 div>
29 {% endfor %}
30 div>
31 
32 {% endblock %}

还是这样糟糕的命名,for循环中的leave就是之前view中的leave,通过get来获取数据,另一点就是strftime,不格式化时间的话后面就还会有一串数据,这样看比较好一点。

之后应该会分页吧,login的页面写好了,或者只能说可以用了,我遇到了我好的问题啊,相比之下这个小小的留言板好像没啥东西。

今天师姐们拍毕业照了,毕业快乐喔,希望明年的ast也会来。

 


推荐阅读
  • 成功实现Asp.Net MVC3网站与MongoDB数据库的高效集成
    我们成功地构建了一个基于Asp.NET MVC3框架的网站,并实现了与MongoDB数据库的高效集成。此次更新不仅完善了基本的创建和显示功能,还全面实现了数据的增删改查操作。在创建功能方面,我们修复了之前代码中的错误,确保每个属性都能正确生成。此外,我们还对数据模型进行了优化,以提高系统的性能和稳定性。 ... [详细]
  • HTTP协议作为互联网通信的基础,其重要性不言而喻。相比JDK自带的URLConnection,HttpClient不仅提升了易用性和灵活性,还在性能、稳定性和安全性方面进行了显著优化。本文将深入解析HttpClient的使用方法与技巧,帮助开发者更好地掌握这一强大的工具。 ... [详细]
  • 本文介绍了一种专为清洁工人设计的自定义文本烟花效果。通过该功能,用户可以输入特定的感谢或祝福语句,系统将生成绚丽的烟花动画,以表达对清洁工人的敬意和感激之情。该特效不仅美观,还能增强用户的互动体验,提升公共场合的氛围。 ... [详细]
  • 本文深入探讨了在使用 Spring Cloud Feign 时遇到的 `java.lang.IllegalStateException` 异常,具体表现为方法体参数过多的问题。通过详细分析异常原因和代码结构,提出了有效的解决方案,帮助开发者更好地理解和处理这一常见问题。 ... [详细]
  • 在处理大规模并发请求时,传统的多线程或多进程模型往往无法有效解决性能瓶颈问题。尽管它们在处理小规模任务时能提升效率,但在高并发场景下,系统资源的过度消耗和上下文切换的开销会显著降低整体性能。相比之下,Python 的 `asyncio` 模块通过协程提供了一种轻量级且高效的并发解决方案。本文将深入解析 `asyncio` 模块的原理及其在实际应用中的优化技巧,帮助开发者更好地利用协程技术提升程序性能。 ... [详细]
  • PHP连接MySQL的三种方法及预处理语句防止SQL注入的技术详解
    PHP连接MySQL的三种方法及预处理语句防止SQL注入的技术详解 ... [详细]
  • 本文提供了 RabbitMQ 3.7 的快速上手指南,详细介绍了环境搭建、生产者和消费者的配置与使用。通过官方教程的指引,读者可以轻松完成初步测试和实践,快速掌握 RabbitMQ 的核心功能和基本操作。 ... [详细]
  • Mongoose E11000 错误:集合中出现重复键问题分析与解决 ... [详细]
  • 本课程详细解析了Spring AOP的核心概念及其增强机制,涵盖前置增强、后置增强和环绕增强等类型。通过具体示例,深入探讨了如何在实际开发中有效运用这些增强技术,以提升代码的模块化和可维护性。此外,还介绍了Spring AOP在异常处理和性能监控等场景中的应用,帮助开发者更好地理解和掌握这一强大工具。 ... [详细]
  • 随着越来越多的应用程序采用JSON格式作为响应数据,基于Spring Framework构建的服务端应用也广泛采用了这一实践。本文将详细介绍如何在Spring 4.x版本的MVC框架中配置和实现HTTP请求返回JSON数据流,涵盖相关配置、依赖管理和代码示例,帮助开发者高效地实现这一功能。 ... [详细]
  • 本文介绍了在 Android 平台上的图片上传工具类优化方案,重点讨论了如何通过设置 `MultipartEntity` 来实现图片的高效上传。具体实现中,通过自定义 `UserUploadServiceImpl` 类,详细展示了如何构建和发送包含图片数据的 HTTP 请求。此外,还探讨了如何处理上传过程中的常见问题,如网络异常和文件格式验证,以确保上传的稳定性和可靠性。 ... [详细]
  • Spring框架下发送嵌入图片邮件时遇到的技术挑战与解决方案
    在Spring框架中发送嵌入图片的HTML格式邮件时,常遇到技术挑战。一种有效的解决方案是在邮件内容中直接使用``标签来引用图片。此外,还可以通过MimeMessageHelper类的addInline方法将图片作为内联资源添加到邮件中,确保图片能够正确显示。这种方法不仅提高了邮件的可读性,还增强了用户体验。 ... [详细]
  • 本文目录一览:1、数据库有哪几种2、数据库软件 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了MongoDB快速入门教程(4.1)相关的知识,希望对你有一定的参考价值。4 ... [详细]
  • nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
author-avatar
董福强
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有