beego 的專案基本都是通過
bee命令來建立的,所以在建立專案之前確保你已經安裝了 bee 工具和 beego。如果你還沒有安裝,那麼請查閱
beego 的安裝
和 bee 工具的安裝
。現在一切就緒我們就可以開始建立專案了,開啟終端,進入
$gopath/src
所在的目錄:
建立乙個專案名為20180118_loongc_beego的基於beego 的新專案,執行如下命令:
bee new 20180118_loongc_beego
依次執行如下命令:進入目錄,執行該專案,在localhost:8080裡檢視,如下圖
cd 20180118_loongc_beego
bee run
安裝beego orm, 降低複雜的orm(
)學習曲線,執行如下命令:
安裝postgresql資料庫驅動,執行如下命令:
在main.go檔案裡新增如下**:
func init()
orm.registerdriver
為配置postgresql資料庫驅動
orm.registerdatabase中:
「default」是預設項
「postgres」表示使用的是postgresql資料庫
user=postgres password=nasadmin dbname=20180111_loongc_test:分別表示資料庫使用者名稱、使用者密碼、資料庫名
host=127.0.0.1 port=5432:分別表示資料庫主機位址、資料庫埠(5432是postgresql的預設埠)
orm.registermodel:
表示註冊model,每新增乙個model檔案,都需要register,否則無法訪問。當前表示有兩個model,user和topic
在資料夾models下新建檔案user.go,檔案內容如下:
模型user構造完成,乙個完整的模型還需要新增函式通用方法,這裡實現乙個使用者登入,在檔案中新增使用者登入驗證函式,如下:
func login(username string, password string)(bool, user)
在views目錄底下新增login.tpl檔案,tpl檔案是模板寫法,本質還是遵循html檔案寫法,但是支援框架本身的很多變數。檔案內容如下:
beego框架中,所有檢視view顯示,都是要定義在控制器裡的。當登入頁面已經構建好,但是無法在瀏覽器裡馬上渲染。這也是beego的侷限性,當我需要建立乙個新的tpl檔案放到伺服器端,然後在iframe裡通過src引用的時候,新的tpl的名字是動態的,無法動態的在控制器裡新增定義。
在當前登入功能中,包括兩個控制器,**如下:
乙個登入頁面渲染控制器loginpage,它定義了模板檔案的位置,並且定義了兩個輸入框的值,在登入頁面通過}的方法給使用者id輸入框設定預設值。
乙個登入驗證控制器login,它是將使用者提交的username和password拿到之後,然後呼叫之前model裡定義的方法,實現驗證。驗證成功之後進入index.tpl頁面(主頁),驗證失敗仍停留在login.tpl。這裡仍存在乙個beego的問題,如果使用jquery 的ajax方法,beego無法設定返回值,這裡原來的redirect的也會失效,甚至c.tplname方法也同樣不起作用。
}登入介面使用jquery ajax傳送的請求是如何被beego框架捕獲的,因為很明顯的是在這個案例中url給的value是 /login ,這是乙個不符合一般化的ajax格式的值,這個是由beego框架自己定義的路由來控制的。在routers目錄底下有乙個router.go檔案,在這裡定義了前端的所有請求的最後會被分發到不同控制器,**如下所示:
}這裡一共定義了四個四個不同的路由,按順序,分別是初始化web的預設開啟頁面、登入驗證控制器、初始化index.tpl(這個是登入成功之後開啟的頁面),最後乙個是在本例項中設計的登入頁面跳轉問題,後續章節繼續說明。
解決登入跳轉
在這裡還是堅持ajax做資料傳送,因為並不是所有的情況的都是通過input、testxarea、select輸入要儲存的資料。
在這裡提供鑑於console.log(res)出的是要開啟頁面的**,那麼假設驗證登入失敗,如果開啟的頁面是個空的文件,那麼if(res) 只有在驗證正確的時候才會恒為true,否則就為false,所以我在路由中定義了乙個 /error 的路由,在控制器裡讓它開啟乙個名為error.tpl的空文件,當驗證錯誤的時候console.log(res)是空的,所以if(res)為false,以此來控制登入驗證成功與否時的跳轉。但是提示錯誤資訊並沒有很好展現
beego是比較完善的框架,但是適用範圍僅限於,按照模板輸出不同資料。
後台控制跳轉,算不得友好,尤其是前端標籤都無法單獨控制頁面跳轉。
無法實現靈活的資料資料輸入,路由限制決定了資料傳送方式被限定太死,不符合實際。尤其是與ajax這種很成熟的資料路由配合都很差。
輸入資料的合法性校驗,由後端完成,這種工作應該盡量由前端完成。
kmp從入門到放棄
標籤 kmp 擴充套件kmp 給你兩個字串,你需要回答,b串是否是a串的子串 a串是否包含b串 a aaaaaaaaaaaaaaaaaaaaaaaaaab b aaaaaaaab 最壞狀態 o mn 一般做法 for 列舉b在a串中的起始位置 for 向後比較ab是否相等 o n m 傳說中的kmp...
Flutter從入門到放棄
本篇主要記錄下flutter的學習路線。一 認識flutter 可以檢視這些文章 二 dart語言 1 認識dart語言 2 學習 從2018.02開始出現dart2,屬於強型別語言。介紹位址參考 三 開始flutter 網上也有很多部落格介紹了flutter怎麼安裝,但大多介紹不全,第一次安裝難免...
python 從入門到放棄
本人所有關於python的內容均為學習期間的整理的筆記,希望可以給學習者帶來些許幫助!不過一入it深似海!準備入行者請做好充分的心理準備!計算機的知識跟新迭代速度很快,不學習就會被淘汰!如果你打算入行然後找乙份安穩的工作安度餘生,那麼我還是建議去考公務員吧!這個行業可能並不適合你!有不少的人可能都覺...