1、概述css
forum是一個簡單的web.py論壇,後端採用Python+web.py+MySQL,前端採用HTML+CSS+JavaScript+jQuery+RequireJS。html
該論壇的主要功能包括:前端
forum代碼的GitHub主頁:https://github.com/RussellLuo/forum。python
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
二、獲取代碼
$ 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還借鑑了其中的代碼結構和分頁顯示功能。