• 一个简单的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还借鉴了其中的代码结构和分页显示功能。

  • 相关阅读:
    基于GIS的生态环境信息一张图系统应用与研究
    基于GIS的开源社区(村)网格化数据管理平台
    智慧乡村综合解决方案数字化智能农业
    开源免费乡村振兴数字乡村平台
    Oracle连接字符串记录
    SqlLocalDB使用笔记
    Orchard分类Taxonomies图文教程
    自己手动maven命令将jar包安装到本地。
    Mysql如何去掉数据库中重复记录?
    常见的数据库方面问题
  • 原文地址:https://www.cnblogs.com/russellluo/p/3240564.html
Copyright © 2020-2023  润新知