一个简单的web.py论坛
一、概述
forum是一个简单的web.py论坛,后端采用Python+web.py+MySQL,前端采用HTML+CSS+JavaScript+jQuery+RequireJS。
该论坛的主要功能包括:
- 注册、登录、密码找回
- 头像/签名/邮箱/密码修改
- 游客自由看贴、文章列表分页显示
- 登录后发帖、作者才能删贴(所有对该贴的评论也会被删除)
- 登录后无刷新回帖(包括引用回帖,即对回复的回复)
forum代码的GitHub主页:https://github.com/RussellLuo/forum。
二、代码结构
forum是一个典型的Web应用,代码结构总体分为后端(back-end,简写为be)和前端(front-end,简写为fe)两部分。
后端部分又可以分为URL路由处理(简写为url,这部分代码与web.py框架强相关)、数据库读写(简写为db,即与MySQL的交互)和HTML模板(简写为html),而前端部分则主要分为JavaScript(简写为js)和CSS。其实这种划分也不是十分严格的,例如用于生成动态页面的HTML模板,就夹杂了后端的web.py模板技术和前端的HTML语法。
以下为forum程序的目录结构,注释的抬头表明了该文件的所属分类:
- forum/
- forum.py (be_url: 后台主程序,URL路由入口)
- model.py (be_db: 访问users、posts、comments表)
- README.md
- schema.sql (be_db: 用于创建MySQL数据库和表的SQL语句)
- settings.py (be_url: 一些网站级别的全局配置)
- static/
- css/
- style.css (fe_css: 定义了页面元素的样式)
- img/
- user_normal.jpg
- boy.gif
- girl.gif
- js/
- app/ (fe_js: 自主开发代码)
- comment.js (fe_js: 专用模块,用于动态处理view.html中的回帖操作)
- common.js (fe_js: 通用模块,定义了一些公用的变量或函数)
- login.js (fe_js: 专用模块,用于动态处理login.html页面)
- new_post.js (fe_js: 专用模块,用于动态处理add.html页面)
- password.js (fe_js: 专用模块,用于动态处理password.html页面)
- profile.js (fe_js: 专用模块,用于动态处理master_profile.html页面)
- register.js (fe_js: 专用模块,用于动态处理register.html页面)
- setting.js (fe_js: 专用模块,用于动态处理account_settings.html页面)
- validator.js (fe_js: 通用模块,用于表单输入的合法性验证)
- lib/ (fe_js: 第三方库)
- jquery-1.10.1.min.js (fe_js: jQuery库)
- require.min.js (fe_js: RequireJS库,用于JavaScript/jQuery代码的模块化)
- main.js (fe_js: JavaScript代码入口,主模块)
- templates/
- about.html (be_html: “关于”页面)
- account_settings.html (be_html: “设置”页面)
- failed.html (be_html: 操作失败时的页面)
- list.html (be_html: 所有帖子的列表,也是论坛主页)
- master_profile.html (be_html: 用户登录后的个人信息页面)
- register.html (be_html: “注册”页面)
- view.html (be_html: 看贴/回帖的页面)
- account_posts.html (be_html: “文章”页面)
- add.html (be_html: “发帖”页面)
- layout.html (be_html: 网站页面布局)
- login.html (be_html: “登录”页面)
- password.html (be_html: “找回密码”页面)
- user_profile.html (be_html: 用户未登录时的个人信息页面,或者其他用户的信息页面)
- util.py (be_url: 定义了一些辅助函数)
三、运行
1、相关依赖
- Python(建议2.6以上,更低版本没有试过)
- web.py(0.37版本)
- MySQLdb
- markdown
2、获取代码
- $ git clone https://github.com/RussellLuo/forum.git
- $ cd forum
3、初始配置
a)MySQL账户配置
修改settings.py中的“MySQL配置”:
- # 本地环境下的MySQL配置
- MYSQL_USERNAME = 'your_mysql_username' # 修改为你本地的MySQL用户名
- MYSQL_PASSWORD = 'your_mysql_password' # 修改为你本地的MySQL密码
b)创建数据库
- $ mysql -u[mysql_username] -p
- Enter Password: [mysql_password]
- ...
- mysql> source schema.sql;
c)邮件服务器配置
登录页面中的“找回密码”功能是指:发送包含临时密码的邮件给用户,因此需要用到邮件服务器。
修改settings.py中的“email服务器配置”:
- ##### email服务器配置 #####
- import web
- web.config.smtp_server = 'smtp.gmail.com'
- web.config.smtp_port = 587
- web.config.smtp_username = 'your_gmail_address' # 修改为你的gmail邮箱地址
- web.config.smtp_password = 'your_gmail_password' # 修改为你的gmail邮箱密码
- web.config.smtp_starttls = True
如果要使用gmail之外的其他邮件服务器,那上面列出的所有配置都要改,具体数据视情况而定。
4、开始体验
- $ python forum.py
在浏览器中访问 http://0.0.0.0:8080/ 即可。
最后,要特别感谢frankfu,他基于web.py的论坛源码给了我很大的启发,forum还借鉴了其中的代码结构和分页显示功能。
一个简单的web.py论坛的更多相关文章
- 用Python写一个简单的Web框架
一.概述 二.从demo_app开始 三.WSGI中的application 四.区分URL 五.重构 1.正则匹配URL 2.DRY 3.抽象出框架 六.参考 一.概述 在Python中,WSGI( ...
- django创建一个简单的web站点
一.新建project 使用Pycharm,File->New Project…,选择Django,给project命名 (project不能用test命名) 新建的project目录如下: ...
- Docker容器技术-创建一个简单的Web应用
一.创建一个简单的Web应用 1.identicon 基于某个值而自动产生的图像,这个值是IP地址或用户名的散列值. 用途: 通过计算用户名或IP地址的散列值,在网站上提供用于识别用户的图像,以及自动 ...
- 使用Servlet和JSP实现一个简单的Web聊天室系统
1 问题描述 利用Java EE相关技术实现一个简单的Web聊天室系统,具体要求如下. (1)编写一个登录 ...
- 自己动手模拟开发一个简单的Web服务器
开篇:每当我们将开发好的ASP.NET网站部署到IIS服务器中,在浏览器正常浏览页面时,可曾想过Web服务器是怎么工作的,其原理是什么?“纸上得来终觉浅,绝知此事要躬行”,于是我们自己模拟一个简单的W ...
- 一个简单的web服务器
写在前面 新的一年了,新的开始,打算重新看一遍asp.net本质论这本书,再重新认识一下,查漏补缺,认认真真的过一遍. 一个简单的web服务器 首先需要引入命名空间: System.Net,关于网络编 ...
- 使用Java编写一个简单的Web的监控系统cpu利用率,cpu温度,总内存大小
原文:http://www.jb51.net/article/75002.htm 这篇文章主要介绍了使用Java编写一个简单的Web的监控系统的例子,并且将重要信息转为XML通过网页前端显示,非常之实 ...
- Node.js简单介绍并实现一个简单的Web MVC框架
编号:1018时间:2016年6月13日16:06:41功能:Node.js简单介绍并实现一个简单的Web MVC框架URL :https://cnodejs.org/topic/4f16442cca ...
- IntelliJ IDEA 15 部署Tomcat及创建一个简单的Web工程
一.部署Tomcat 二.创建一个简单的Web工程 2.1创建一个新工程 创建一个新工程 设置JDK及选择Web Application (创建的是Web工程) 点击Next,选择工作空间,起个工程名 ...
随机推荐
- L268 A terrifying look at the consequences of climate change
Climate change is a devilish problem for humanity: at once urgent and slow-moving, immediate and dis ...
- synchronized(六)
package com.bjsxt.base.sync006;/** * 锁对象的改变问题 * @author alienware * */public class ChangeLock { priv ...
- 九、编写led驱动
led.c #include <linux/init.h> #include <linux/module.h> #include <linux/cdev.h> #i ...
- php优秀框架codeigniter学习系列——hooks
这篇文章学习CI框架的钩子特性. hooks是CI框架提供的一种机制,允许你在程序框架运行流程的某个阶段执行你自己的一些代码.比如系统运行前,CI_Controller调用前,系统运行结束后等特定的时 ...
- ios中scrollView基本用法
设置scrollView内容的尺寸(滚动的范围) self.scrollView.contentSize = CGSizeMake(, ); self.scrollView.contentSize = ...
- 2019-03-06-day012-生成器与推导式
01 昨日回顾 迭代器: 迭代器有iter方法 next方法就是迭代器 递归: 自己调用自己 明确的结束条件 递归的最大深度 官方 1000 实际测试:998/997 import sys sys.s ...
- python使用traceback获取详细的异常信息
原创来自:https://blog.csdn.net/mengtao0609/article/details/55049059 python使用traceback获取详细的异常信息 2017年02月1 ...
- HttpClient官方sample代码的深入分析(连接池)
前言 之前一直使用apache的httpclient(4.5.x), 进行http的交互处理. 而httpclient实例则使用了http连接池, 而一旦涉及到连接池, 那会不会在使用上有些隐藏很 ...
- mac下python安装MySQLdb模块
参考:http://blog.csdn.net/yelyyely/article/details/41114449 1.调整到anaconda下的python 2.安装有关程序 brew instal ...
- Sublime Text 3(中文)在Windows下的配置、安装、运行
Sublime Text 3(中文)下载.安装.运行! 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 具体 ...