此代码是Google应用引擎网络应用的一部分。任何关于打击代码的重构思想?
def post(self):
user = User.all().filter("id =",self.request.get('id')).get()
for arg in self.request.arguments():
if arg == 'name':
user.name = self.request.get(arg)
elif arg == 'sex':
user.sex = self.request.get(arg)
elif arg == 'age':
user.age = self.request.get(arg)
elif arg == 'interest':
user.interest = self.request.get(arg)
elif arg == 'location':
user.location = self.request.get(arg)
elif arg == 'latitude':
user.latitude = self.request.get(arg)
elif arg == 'longitude':
user.longitude = self.request.get(arg)
user.put()
response_out_update(self, "true")
答案 0 :(得分:8)
valid_args = set(('name', 'sex', 'age', 'interest', 'location', 'latitude', 'longitude'))
for arg in self.request.arguments():
if arg in valid_args:
setattr(user, arg, self.request.get(arg))
可能只有通过制作适当的POST请求,您不希望应用程序用户能够修改User对象的属性。即使这个处理程序仅限于管理员以防止CSRF,但是给它不需要的功能没有明显的好处,因此最多永远不会使用,最坏的情况是有人会弄清楚如何滥用。 / p>