Django-调用类作为视图函数
views.py:Django-调用类作为视图函数,django,Django,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','
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
url.py
(r“^ajax\u profile/$”、“apps.profiles.views.ajax\u profile”)
要调用的URL
ajax\u profile/?action=check\u username&username=testtest
错误:实例没有属性“status\u code”
为什么?您在init()中的最后一行应该是
返回选项[操作]
我不建议这样做。视图应该返回HttpResponse对象,而ajax_profile的init方法应该初始化ajax_profile的实例
如果必须,您可以尝试使用ajax_profile子类HttpResponse,并在ajax_profile的\uuu init\uu
末尾使用super
初始化HttpResponse:
class ajax_profile(HttpResponse):
def __init__(self, request):
# ...
response_text = options[action]()
super(ajax_profile, self).__init__(response_text)
同样值得注意的是,设置
选项
的方式,字典中的每个方法(检查用户名
,检查电子邮件
,等等)每次都将运行,而不管操作如何。可能不是您想要的。当我这样做时,我得到了这个错误-异常值:\uuuu init\uuuu()应该返回None