Report abuse


			
from django.utils import simplejson
# 其它django的引用这里省略

class ExecuteState():
    """
    summary:
        返回值对象,用于返回执行状态        
    """    
    # 是否执行成功,默认是 True 成功,因为经过长期使用发现 True 用得较多
    success = True
    # 提示消息
    message = ""
    # 导致不成功的标志,错误是由谁引起的
    mark = ""
    # 导致不成功的对象 [object 类型]
    owner = None    

    def json(self):
        """
        summary:
            得到本对象的JSON格式的字符串
        """
        return simplejson.encode(str(obj2dict(self)))

def obj2dict(obj):
    """
    summary:
        将object转换成dict类型    
    """
    memberlist = [m for m in dir(obj)]
    _dict = {}
    for m in memberlist:
        if m[0] != "_" and not callable(m):
            _dict[m] = getattr(obj,m)

    return _dict

def signup(request):
    """
    summary:
        signup 视图,URLs里面的定义这里省略
    """
    state = ExecuteState()
    
    if reuqest.POST:    
        # 提交视图处理
        username = request.POST["username"]
        realname = request.POST["realname"]
        password = request.POST["password"]
        password_confirm = request.POST["password_confirm"]
        email = request.POST["email"]
        
        # 重点!验证输入的内容是否符合要求
        state.success = False
        
        if len(username) < 4 or len(username) > 16:
            state.message = "用户名太短,要求4-16个字符。"
            state.mark = "username"
            # 不符合要求了,在这直接用 return 中断并返回 state 用 simplejson.encode 将 state 转换成 JSON
            # 注意!这里有用 dir(state) 这个就是我要讲的一个细节
            # 
            return state.json()
        
        if not regex_check_chinese(realname):
            state.message = "姓名要求必须是中文。"
            state.mark = "realname"
            return state.json()
            
        
        # 后面的提交数据库省略...
        
        # 成功消息
        state.success = True
        state.message = "注册成功。"
        return state

    else:
        # signup 地址普通打开的处理