1. 程式人生 > >廖大python實戰教程第七天

廖大python實戰教程第七天

arch email handlers app som == await href started

MVC框架

使用模板

MVC的全名是Model View Controller,是模型-視圖-控制器的縮寫,是一種軟件設計典範。使用MVC的目的是使M和V的代碼分離,從而使一個程序可以有不同的表現形式。

各種錯誤

這個地方在所難免。實在沒想到用IDE照著敲都會有一些不註意的小細節錯誤。

一開始頁面是 404 Not Found。等查明原因後發現add_routes()函數沒有執行,裏面有三四處錯誤。一般來說,404 Not Found的日誌不會有這麽一句::add route GET / => index(request),從此處我感受到了日誌的重要性。

後來還有一個錯誤,和評論區很多人一樣是 500 Internal Server Error Server got itself in trouble

,出現這種錯誤一般是handlers.py照著廖大教程上copy(嗯,如果不是copy你會發現錯誤的)。因為先前使用的是asnyc/await標記實現異步操作,所以此處也應該改為這種方式。

正確的日誌

意識到日誌的重要性,我就想著發上來,讓有疑惑的人對比一下。

INFO:root:create database connection pool...
INFO:root:init jinja2...
INFO:root:set jinja2 template path: C:\Users\ChanWunsam\awesome-python3-webapp\www\templates
INFO:root:found model: User (table: users)
INFO:root:  found mapping: id ==> <StringField, varchar(50):None>
INFO:root:  found mapping: email ==> <StringField, varchar(50):None>
INFO:root:  found mapping: passwd ==> <StringField, varchar(50):None>
INFO:root:  found mapping: admin ==> <BooleanField, boolean:None>
INFO:root:  found mapping: name ==> <StringField, varchar(50):None>
INFO:root:  found mapping: image ==> <StringField, varchar(500):None>
INFO:root:  found mapping: created_at ==> <FloatField, real:None>
INFO:root:found model: Blog (table: blogs)
INFO:root:  found mapping: id ==> <StringField, varchar(50):None>
INFO:root:  found mapping: user_id ==> <StringField, varchar(50):None>
INFO:root:  found mapping: user_name ==> <StringField, varchar(50):None>
INFO:root:  found mapping: user_image ==> <StringField, varchar(500):None>
INFO:root:  found mapping: name ==> <StringField, varchar(50):None>
INFO:root:  found mapping: summary ==> <StringField, varchar(200):None>
INFO:root:  found mapping: content ==> <TextField, text:None>
INFO:root:  found mapping: created_at ==> <FloatField, real:None>
INFO:root:found model: Comment (table: comments)
INFO:root:  found mapping: id ==> <StringField, varchar(50):None>
INFO:root:  found mapping: blog_id ==> <StringField, varchar(50):None>
INFO:root:  found mapping: user_id ==> <StringField, varchar(50):None>
INFO:root:  found mapping: user_name ==> <StringField, varchar(50):None>
INFO:root:  found mapping: user_image ==> <StringField, varchar(500):None>
INFO:root:  found mapping: content ==> <TextField, text:None>
INFO:root:  found mapping: created_at ==> <FloatField, real:None>
INFO:root:add route GET / => index(request)
INFO:root:add static /static/ => C:\Users\ChanWunsam\awesome-python3-webapp\www\static
INFO:root:server started at http://127.0.0.1:9000...
INFO:root:Request: GET /
INFO:root:Response handler...
INFO:root:call with args: {‘request‘: <Request GET / >}
INFO:root:SQL: select `id`, `email`, `passwd`, `admin`, `name`, `image`, `created_at` from `users`
INFO:root:rows returned: 2
INFO:aiohttp.access:127.0.0.1 - - [26/Jan/2018:12:17:38 +0000] "GET / HTTP/1.1" 200 402 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
INFO:root:Request: GET /
INFO:root:Response handler...
INFO:root:call with args: {‘request‘: <Request GET / >}
INFO:root:SQL: select `id`, `email`, `passwd`, `admin`, `name`, `image`, `created_at` from `users`
INFO:root:rows returned: 2
INFO:aiohttp.access:127.0.0.1 - - [26/Jan/2018:12:18:08 +0000] "GET / HTTP/1.1" 200 402 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
INFO:root:Request: GET /
INFO:root:Response handler...
INFO:root:call with args: {‘request‘: <Request GET / >}
INFO:root:SQL: select `id`, `email`, `passwd`, `admin`, `name`, `image`, `created_at` from `users`
INFO:root:rows returned: 2
INFO:aiohttp.access:127.0.0.1 - - [26/Jan/2018:12:18:10 +0000] "GET / HTTP/1.1" 200 402 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"

嗯,出現錯誤,不要懷疑教程,好好檢查一下handlers,coreweb,app這幾個文件。

廖大python實戰教程第七天