") 的深入理解">

2018-04-21 对代码@app.route("/newrequest/") 的深入理解

在waitercaller.py 中,有如下代码:


@app.route("/newrequest/")

def new_request(tid):

    DB.add_request(tid, datetime.datetime.now())

    return "Your request has been logged and a waiter will be with you shortly" 


之前 总是对     "是谁 定义,在哪里预先定义了  变量     有疑问“ 

--ASW: 

现在 了解到 : 

应该是 ,就是 flask 的route decorator中的一个功能 ,

在 指定 一个路径时 ,可以 即时 (不用预先 提前 声明 变量) 的使用一个 变量 ,作为 路径上 的一段的截取,


并把截取下的这段 ,做为 有变量名称(此处是 )下的变量 : tid 是自定义的变量名(bid, kid,kk 都可以), < > 是声明即时 变量的标记  

---// 这种 明文的方式 ,用的应该是 GET 

所以书后面提到要用 index 在mongodb中,要加在table_id 即上。 It's also useful because our requests are created using GET requests, which can easily be duplicated

(by a browser preloading a page or a social network scraping the links a user visits to

find out more about them)


另外 通过对上面的 的新理解后, 对代码的阅读 也有了新的理解。 

下面的函数 def new_request(tid) 

相当于 把 tid ==就是数据库里的那个 db.tables 表中 每个 table的 "_id”  传递给 新的request 表中的 一个new key (table_id)


这个设计 ,就是为什么用 一个长串的唯一的编码 (tid) 代替 简单的,1,23,14 等 table number ,背后的商业原理是 

This route matches a dynamic table ID. Since our URLs use the globally unique

table ID and not the user-chosen table number, we don't need to worry about which

restaurant owns the table. We tell our database to create a new request, which

contains the table ID and the current time. We then display a message to the patron,

notifying him or her that the request was successfully made. Note that this is the

only route for the application that our users' patrons will use. The rest of the routes

are all intended to be used only by the restaurant managers or waiters themselves. 


你可能感兴趣的:(2018-04-21 对代码@app.route("/newrequest/") 的深入理解)