一個簡單的web.py論壇

1、概述css

forum是一個簡單的web.py論壇,後端採用Python+web.py+MySQL,前端採用HTML+CSS+JavaScript+jQuery+RequireJS。html

該論壇的主要功能包括:前端

  • 註冊、登陸、密碼找回
  • 頭像/簽名/郵箱/密碼修改
  • 遊客自由看貼、文章列表分頁顯示
  • 登陸後發帖、做者才能刪貼(全部對該貼的評論也會被刪除)
  • 登陸後無刷新回帖(包括引用回帖,即對回覆的回覆)

forum代碼的GitHub主頁:https://github.com/RussellLuo/forumpython

2、代碼結構mysql

forum是一個典型的Web應用,代碼結構整體分爲後端(back-end,簡寫爲be)和前端(front-end,簡寫爲fe)兩部分。jquery

後端部分又能夠分爲URL路由處理(簡寫爲url,這部分代碼與web.py框架強相關)、數據庫讀寫(簡寫爲db,即與MySQL的交互)和HTML模板(簡寫爲html),而前端部分則主要分爲JavaScript(簡寫爲js)和CSS。其實這種劃分也不是十分嚴格的,例如用於生成動態頁面的HTML模板,就夾雜了後端的web.py模板技術和前端的HTML語法。git

如下爲forum程序的目錄結構,註釋的擡頭代表了該文件的所屬分類:github

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: 定義了一些輔助函數)

3、運行web

一、相關依賴sql

  • Python(建議2.6以上,更低版本沒有試過)
  • web.py(0.37版本)
  • MySQLdb
  • markdown

二、獲取代碼

$ git clone https://github.com/RussellLuo/forum.git
$ cd forum

三、初始配置

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以外的其餘郵件服務器,那上面列出的全部配置都要改,具體數據視狀況而定。

四、開始體驗

$ python forum.py

在瀏覽器中訪問 http://0.0.0.0:8080/ 便可。

最後,要特別感謝frankfu,他基於web.py的論壇源碼給了我很大的啓發,forum還借鑑了其中的代碼結構和分頁顯示功能。

相關文章
相關標籤/搜索