对于我的应用程序,我希望路由结构化,以便访问www.myapp.com/(username)将您带到该用户的页面。我设置它的方法是使用以下处理程序。
import time
import Tkinter as tk
from Tkinter import StringVar
import threading
global root
root = tk.Tk()
x = tk.StringVar()
x.set('false')
def xval(*args):
try:
for i in range(0,9):
global x
print x.get()
if x.get()== 'false' :
print "x=false %d time"%i
time.sleep(1)
else:
print "waiting"
root.update()
except:
pass
def stop(event):
resume_btn.configure(state="normal")
global x
x.set('true')
print "execution stopped:%s"%x
def start(event):
global x
x.set('false')
print "execution started:%s"%x
xval()
root.title("GUI-Data Retrieval")
th = threading.Event()
t = threading.Thread(target=xval,args=(th,))
t.deamon=True
t.start()
x_btn = tk.Button(root, text="Stop", background="Snow", width=20, relief="raised")
x_btn.grid(row=0, column=4, sticky="W", padx=20, pady=5)
x_btn.bind('<Button-1>',stop)
resume_btn = tk.Button(root, text="Start", background="Snow", width=20, relief="raised")
resume_btn.configure(state="disabled")
resume_btn.grid(row=0, column=6, sticky="W", padx=20, pady=5)
resume_btn.bind('<Button-1>',start)
root.mainloop()
此设置有效,但这是正确的方法吗?我必须把这个处理程序放在我的其他处理程序之下,否则:username会尝试渲染传递给它的任何东西。
答案 0 :(得分:1)
如果这样做,您必须控制用户名不是系统中的“保留路径”。例如,如果你有:
app.get('/about',...
app.get('/admin',...
app.get('/login',...
您确定用户名是“不是”,“管理员”,“登录”等。如@saadq所说,/user/:username
更可取。但如果你不能,你必须有一个黑名单的用户名。