Tôi là nhà phát triển web. noobie và tôi đang đặt cùng một trang đăng ký đơn giản như thực hành bằng cách sử dụng Python trên GoogleApp Engine.đối tượng 'unicode' không thể gọi được
Khi biểu mẫu đăng ký được điền không chính xác, chương trình hoạt động tốt. Khi nó được điền chính xác, nó là nghĩa vụ phải chuyển hướng đến một trang cảm ơn nhưng thay vào đó tôi nhận được một lỗi server:
Internal Server Error
The server has either erred or is incapable of performing the requested operation.
Traceback (most recent call last):
File "/Users/bendavidow/Desktop/Stuff/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEng ine-default.bundle/Contents/Resources/google_appengine/lib/webapp2/webapp2.py", line 1547, in __call__
return response(environ, start_response)
TypeError: 'unicode' object is not callable
Câu hỏi của tôi là hai lần: (1) không lỗi này có ý nghĩa gì? và (2) Nó đến từ đâu?
Dưới đây là các mã, trừ html:
import webapp2
import re
import cgi
def escape_html(s):
return cgi.escape(s, quote = True)
class MainPage(webapp2.RequestHandler):
def write_form(self, username = "", email = "", username_error = "", password_error = "", verify_error = "", email_error = ""):
self.response.out.write(form %{"username": escape_html(username), "email": escape_html(email), "username_error": username_error, "password_error": password_error, "verify_error": verify_error, "email_error": email_error})
def get(self):
self.write_form()
def post(self):
username = self.request.get('username')
password = self.request.get('password')
verify = self.request.get('verify')
email = self.request.get('email')
username_check = re.search(r'^[a-zA-Z0-9_-]{3,20}$', username)
password_check = re.search(r'^.{3,20}$', password)
email_check = re.search(r'^[\S][email protected][\S]+\.[\S]+$',email)
username_error, password_error, email_error, verify_error = "", "", "", ""
if not username_check:
username_error = "Invalid Username"
if not password_check:
password_error = "Invalid Password"
if email != '' and not email_check:
email_error = "Invalid Email"
if password != verify:
verify_error = "Passwords do not match"
if username_error or password_error or email_error or verify_error:
self.write_form(username, email, username_error, password_error, verify_error, email_error)
else:
return username
self.redirect("/thanks")
class ThanksHandler(webapp2.RequestHandler):
def get(self):
self.response.out.write("Welcome " + username)
app = webapp2.WSGIApplication([('/', MainPage), ('/thanks',ThanksHandler)], debug = True)
Tôi nghi ngờ một nơi nào đó bạn đã vô tình ghi đè self.response với đối tượng unicode. Khi nó cố gắng gọi nó sau này, nó cố gắng gọi chuỗi của bạn. – Max
Thụt lề của bạn có vẻ khá bị hỏng, và đây là Python khó mà ai khác biết được ý định của bạn là gì. – millimoose