一個簡單的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還借鑒了其中的代碼結構和分頁顯示功能。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM