一个简单的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)