views.py:
class ajax_profile():
def __init__(self, request):
username = request.REQUEST.get('username','')
email = request.REQUEST.get('email','')
password = request.REQUEST.get('password','')
action = request.REQUEST.get('action','')
options = {
'check_username' : self.check_username(username),
'check_email' : self.check_email(email),
'forgot_password' : self.forgot_password(email),
'login' : self.login(username, password),
}
options[action]
def check_username(self, username):
return HttpResponse('Test %s' % username)
def check_email(self, email):
pass
def forgot_password(self, email):
pass
def login(self, username, password):
pass
urls.py
(r'^ ajax_profile / $','apps.profiles.views.ajax_profile'),
要拨打的网址
ajax_profile /动作= check_username&安培;用户名= TESTTEST
错误:实例没有属性'status_code'
为什么?
答案 0 :(得分:2)
我不建议这样做。您的视图应该返回HttpResponse对象,而ajax_profile的init方法应该初始化ajax_profile的实例。
如果必须,您可以尝试使用ajax_profile子类HttpResponse,并使用super
在ajax_profile __init__
的末尾初始化HttpResponse:
class ajax_profile(HttpResponse):
def __init__(self, request):
# ...
response_text = options[action]()
super(ajax_profile, self).__init__(response_text)
另外值得注意的是,每次都会运行options
的设置方式,字典中的每个方法(check_username
,check_email
等)无论行动如何。可能不是你想要的。
答案 1 :(得分:-1)
init()中的最后一行应为return options[action]