예제 #1
0
def register_handle(request):
    """注册验证"""
    # 获取注册信息
    post = request.POST
    uname = post.get('user_name')
    upwd1 = post.get('pwd')
    upwd2 = post.get('cpwd')
    uemail = post.get('email')
    # 验证两次密码是否相同
    if upwd1 == upwd2:
        # 密码加密
        s1 = sha1()
        s1.update(upwd1)
        upwd3 = s1.hexdigest()

        #存入数据库
        user = UserInfo()
        user.uname = uname
        user.upwd = upwd3
        user.uemail = uemail
        user.save()

        return redirect('/user/login/')

    else:
        return redirect('/user/register/')
예제 #2
0
파일: views.py 프로젝트: sattti161/mysite
def register(request):
    if request.method == 'POST': # If the form has been submitted...
        row = UserInfo(email_id = request.POST['email'], password = request.POST['pwd'],
                           full_name = request.POST['fullname'])
        row.save()
        email = request.POST['email'];
    return HttpResponseRedirect('alternative')
예제 #3
0
 def get_prev_step(self):
     """
     Get previous step of dialog for this chat ID
     :return: dialog_date(list) with: chat_id, command, step
     """
     dialog, created = DialogStepRouting.objects. \
         get_or_create(chat_id=self.context['message']['chat']['id'],
                       defaults={'chat_id': self.context['message']['chat']['id'],
                                 'command': self.context['message'].get('text', ''),
                                 'step': 0})
     if created:
         # If new dialog safe user info
         user_info = UserInfo(
             first_name=self.context['message']['from'].get(
                 'first_name', ''),
             last_name=self.context['message']['from'].get('last_name', ''),
             username=self.context['message']['from'].get('last_name', ''),
             chat_id=self.context['message']['from']['id'])
         user_info.save()
     dialog_data = {
         'chat_id': dialog.chat_id,
         'command': dialog.command,
         'step': dialog.step,
         'created': created
     }
     return dialog_data
예제 #4
0
def register(request):
    if request.method == 'GET':
        return render(request, 'df_user/register.html', {'title': 'sign up'})

    elif request.method == 'POST':
        body = request.POST
        uname = body.get('user_name')
        upwd = body.get('pwd')
        upwd2 = body.get('cpwd')
        uemail = body.get('email')

        if upwd != upwd2:
            return redirect('/user/register/')

        s1 = sha1()
        s1.update(upwd)
        upwd3 = s1.hexdigest()

        user = UserInfo()
        user.uname = uname
        user.upwd = upwd3
        user.uemail = uemail

        user.save()

        return redirect('/user/login/')
예제 #5
0
 def get_chat_data(self):
     """
     Get chat data from context, if it's first conversation save user info data
     :return: dialog_data(list) with: chat_id, command, step
     """
     dialog, created = DialogStepRouting.objects.\
         update_or_create(chat_id=self.context['message']['chat']['id'],
                          defaults={'chat_id': self.context['message']['chat']['id'],
                                    'command': self.context['message']['text'],
                                    'step': 0})
     if created:
         # If new dialog safe user info
         user_info = UserInfo(
             first_name=self.context['message']['from'].get(
                 'first_name', ''),
             last_name=self.context['message']['from'].get('last_name', ''),
             username=self.context['message']['from'].get('last_name', ''),
             chat_id=self.context['message']['from']['id'])
         user_info.save()
     dialog_data = {
         'chat_id': dialog.chat_id,
         'command': dialog.command,
         'step': dialog.step,
         'created': created
     }
     return dialog_data
예제 #6
0
파일: auth.py 프로젝트: Mrowqa/aplikacjawww
def loginView(request):
    context = get_context(request)
    
    # Forget AccountAccesses to merge if user goes somewhere then back to login.
    if 'merge_access' in request.session:
        del request.session['merge_access']
    if 'merge_access_info' in request.session:
        del request.session['merge_access_info']
    
    if request.user.is_authenticated():
        try:
            access = request.user.accountaccess_set.all()[0]
        except IndexError:
            access = None
        else:
            client = access.api_client
            user_info = client.get_profile_info(raw_token=access.access_token)
            context['info'] = user_info

            user = request.user
            try:
                user_profile = UserProfile.objects.get(user=user)
            except UserProfile.DoesNotExist:
                new_user_info = UserInfo()
                new_user_info.save()
                user_profile, just_created = UserProfile.objects.get_or_create(user=user, user_info=new_user_info)

                # I'm not sure if this condition is necessary.
                if just_created:
                    standarize_user_info(user_info)
                    if 'gender' in user_info:
                        user_profile.gender = user_info['gender']
                    user.save()
                    user_profile.save()
    return render(request, 'login.html', context)
예제 #7
0
def regist(request):
    # 所有返回数据都写到这里面
    return_data = dict()
    if request.method == "POST":
        user_name = request.POST.get("user_name","")
        user_psw = request.POST.get("user_psw","")
        # 通过正则匹配密码强度,匹配做两次,防止有人恶意更改
        result = UserInfo.objects.filter(user_name=user_name)
        if result:
            return_data["status"] = 0
            return_data["msg"] = "用户名已存在,请换个名字"
            return HttpResponse(json.dumps(return_data),content_type="application/json",status=404)
        else:
            if user_name == "" or user_psw == "":
                return_data["status"] = 0
                return_data["msg"] = "用户名密码不能为空"
                return HttpResponse(json.dumps(return_data), content_type="application/json", status=404)
            user = UserInfo()
            user.user_name = user_name
            user.user_psw = secure.md5_32(user_psw)
            user.user_head = ""
            user.save()
            return_data["status"] = 1
            return_data["msg"] = "注册成功"
            return HttpResponse(json.dumps(return_data), content_type="application/json", status=200)

    return render(request,"regist.html",{
        "title":"注册页面",
    })
예제 #8
0
파일: tests.py 프로젝트: dtarasiuk/zdjango
 def test_signals(self):
     old_count = LogEntry.objects.count()
     userobject = UserInfo(name='testname', \
                           surname='testsurname', \
                           birthday='2010-02-17', \
                           about='test', \
                           contacts='test');
     userobject.save()
     self.assertNotEqual(old_count, LogEntry.objects.count())
예제 #9
0
def create_root(email, password, fullname):
    hash = argon2.hash(password)
    new_root = User(fullname=fullname, email=email, hash=hash, is_root=True)
    try:
        new_root.save()
        root = User.fetchone(email=email)
        root_info = UserInfo(
            user_id=root.id,
            permission_groups=[group.name for group in all_permission_groups])
        root_info.save()
    except UniqueViolatedError:
        print('Duplicated root user')
예제 #10
0
def register_handle(request):
    #接收用户请求
    post = request.POST
    uname = post.get('user_name')
    upwd = post.get('user_pwd')
    ucpwd = post.get('user_cpwd')
    uemail = post.get('user_email')
    #密码加密
    s1 = sha1()
    s1.update(upwd)
    upwd_sha1 = s1.hexdigest()
    #向数据库中保存数据
    user = UserInfo()
    user.uname = uname
    user.upwd = upwd_sha1
    user.umail = uemail
    user.save()
    #重定向到登录页
    return redirect('/user/login/')
예제 #11
0
	def add_user_data(self, request):
		add_data = request.POST.getlist('req_json')[0]
		trans_add_data = json.loads(add_data)
		print trans_add_data
		status = ''
		if UserInfo.objects.filter(name = trans_add_data['name']):
			status = 'Failed'
		else:
			add_user = UserInfo(name = trans_add_data['name'], permission = trans_add_data['permission'])
			add_user.save()
			status = 'Successful'

		rsp_data = {'status': status}
		response = HttpResponse(json.dumps(rsp_data))
		response["Access-Control-Allow-Origin"] = "*"
		response["Access-Control-Allow-Methods"] = "POST, GET, OPTIONS"
		response["Access-Control-Max-Age"] = "1000"
		response["Access-Control-Allow-Headers"] = "*"
		return response
예제 #12
0
파일: views.py 프로젝트: nl30du/python
def register_handle(request):
    uname = request.POST['user_name']
    upwd = request.POST['pwd']
    cpwd = request.POST['cpwd']
    uemail = request.POST['email']
    if upwd != cpwd:
        pass

    upwd1 = hashlib.sha1()
    upwd1.update(upwd)
    encry_upwd = upwd1.hexdigest()

    user = UserInfo()
    user.uname = uname
    user.upwd = encry_upwd
    user.uemail = uemail
    user.save()
    # print request.POST['email']
    return render(request, 'df_user/register_success.html')
예제 #13
0
def register_handle(request):
    uname = request.POST.get("user_name")
    upwd = request.POST.get("pwd")
    upwd2 = request.POST.get("cpwd")
    uemail = request.POST.get("email")

    if upwd != upwd2:
        return redirect('/user/register/')

    s1 = sha1()
    s1.update(upwd)
    upwd3 = s1.hexdigest()

    user = UserInfo()
    user.uname = uname
    user.upwd = upwd3
    user.uemail = uemail
    user.save()

    return redirect('/user/login/')
예제 #14
0
def register():
	confirm = request.form['confirm']
	email = request.form['email']
	userID = request.form['hiddenfield']
	password = request.form['hiddenfield2']
	print userID," ",password
	
	if password == confirm:
		hashedPassword = generate_password_hash(password)
		user = UserInfo(userID= userID,email= email,password= hashedPassword)
		
		try:
			user.save()
			if login_user(user):
				return redirect(url_for('GetList'))
			else:
				error="Unable to Log you in due to inactive account"
		except Exception,e:
			print str(e)
			error="UserId taken. Please try another."
예제 #15
0
def adduser(request):
	posData = request.POST
	uid = posData.get('uid')
	username = posData.get('username')
	name = posData.get('name')
	gender = posData.get('gender')
	email = posData.get('email')
	if gender == 'null':
		gender = None
	elif int(gender) == 0:
		gender = 0
	else:
		gender = 1
	if username and name and email:
		if uid:
			UserInfo.objects.filter(uid=int(uid)).update(username=username, realName=name, gender=gender, email=email)
		else:
			userInfo = UserInfo(username=username, realName=name, gender=gender, email=email)
			userInfo.save()
	return HttpResponseRedirect('/userlist/')
예제 #16
0
 def post(self):
     """Create new user"""
     fullname = request.get_json()['fullname']
     email = request.get_json()['email']
     password = request.get_json()['password']
     permission_groups = request.get_json()['permissionGroups']
     hash = argon2.hash(password)
     new_user = User(fullname=fullname,
                     email=email,
                     hash=hash,
                     is_root=False)
     try:
         new_user.save()
     except UniqueViolatedError:
         return jsonify(error="Duplicated email address"), 409
     """Create the user info for the new user"""
     user_info = UserInfo(user_id=new_user.id,
                          permission_groups=permission_groups)
     user_info.save()
     return jsonify(message="ok")
예제 #17
0
	def set_dbdata(self, request):
		tmp_data = Person(name='LSZ', age=27)
		tmp_data.save()

		# for group_data in g_groups:
		# 	print group_data.name
		# 	print group_data.permisson
		# 	db_obj = GroupInfo(name = group_data.name, permission = group_data.permisson)
		# 	db_obj.save()

		for user in g_users:
			db_obj = UserInfo(name = user.name, email=user.email, \
			                  permission = user.permisson, groups = user.groups)
			db_obj.save()
		rsp_data = {'data': 'set database data!'}
		response = HttpResponse(json.dumps(rsp_data))
		response["Access-Control-Allow-Origin"] = "*"
		response["Access-Control-Allow-Methods"] = "POST, GET, OPTIONS"
		response["Access-Control-Max-Age"] = "1000"
		response["Access-Control-Allow-Headers"] = "*"
		return response
예제 #18
0
def register_handle(request):
    dict = request.POST
    uname = dict.get('user_name')
    upwd = dict.get('pwd')
    upwd2 = dict.get('cpwd')
    email = dict.get('email')

    if upwd != upwd2:
        return redirect('/user/register/')

    s1 = sha1()
    s1.update(upwd)
    upwd_sha1 = s1.hexdigest()

    user = UserInfo()
    user.uname = uname
    user.upwd = upwd_sha1
    user.uemail = email
    user.save()

    return redirect('/user/login/')
예제 #19
0
파일: views.py 프로젝트: guch96/django1
def register_saveInfo(request):
    post = request.POST
    uname = post.get('user_name')
    upwd = post.get('pwd')
    cpwd = post.get('cpwd')
    uemail = post.get('email')
    count = UserInfo.objects.filter(uname=uname).count()
    if upwd != cpwd:
        return redirect('/user/register/')
    # elif count==1:
    #     return redirect('/user/register/?erroinfo=exist')
    else:
        s = sha1()
        s.update(upwd)
        upwd1 = s.hexdigest()
        user = UserInfo()
        user.uname = uname
        user.upwd = upwd1
        user.uemail = uemail
        user.save()

        return redirect('/user/login/')
예제 #20
0
def register_handle(request):
    #接收用户输入
    post = request.POST
    uname = post.get('user_name')
    upwd = post.get('pwd')
    upwd2 = post.get('cpwd')
    uemail = post.get('email')
    #判断两次密码
    if upwd != upwd2:
        return
    #对密码进行加密
    s1 = sha1()
    s1.update(upwd)
    upwd3 = s1.hexdigest()
    #创建对象
    user = UserInfo()
    user.uname = uname
    user.upwd = upwd3
    user.uemail = uemail
    user.save()

    return redirect('/user/login/')
예제 #21
0
def registerHandle(request):
    if request.method == 'POST':
        #接收注册信息
        uname = request.POST['uname']
        upwd = request.POST['upwd']
        cpwd = request.POST['cpwd']
        uemail = request.POST['uemail']
        #判断是否同意用户使用协议
        if request.POST.get('allow') == 'on':

            #如果填写信息有空的回到本页
            if uname == '' or upwd == '' or cpwd == '' or uemail == '':
                #return redirect("/consumer/register/")
                context = {"errinfo": "注册信息有误!"}
                return render(request, "consumer/register.html", context)
            else:
                if upwd != cpwd:
                    #return redirect("/consumer/register/")
                    context = {"errinfo": "注册信息有误!"}
                    return render(request, "consumer/register.html", context)

                else:
                    #保存注册信息
                    #sha1加密
                    s1 = sha1()
                    s1.update(upwd)
                    upwd = s1.hexdigest()
                    u = UserInfo()
                    u.uname = uname
                    u.uemail = uemail
                    u.upwd = upwd
                    u.save()
                    return redirect("/consumer/login/")

        else:
            return redirect("/consumer/register")
예제 #22
0
def loginView(request):
    context = get_context(request)

    # Forget AccountAccesses to merge if user goes somewhere then back to login.
    if 'merge_access' in request.session:
        del request.session['merge_access']
    if 'merge_access_info' in request.session:
        del request.session['merge_access_info']

    if request.user.is_authenticated():
        try:
            access = request.user.accountaccess_set.all()[0]
        except IndexError:
            access = None
        else:
            client = access.api_client
            user_info = client.get_profile_info(raw_token=access.access_token)
            context['info'] = user_info

            user = request.user
            try:
                user_profile = UserProfile.objects.get(user=user)
            except UserProfile.DoesNotExist:
                new_user_info = UserInfo()
                new_user_info.save()
                user_profile, just_created = UserProfile.objects.get_or_create(
                    user=user, user_info=new_user_info)

                # I'm not sure if this condition is necessary.
                if just_created:
                    standarize_user_info(user_info)
                    if 'gender' in user_info:
                        user_profile.gender = user_info['gender']
                    user.save()
                    user_profile.save()
    return render(request, 'login.html', context)
예제 #23
0
    def post(self, request):
        name = request.POST.get('name')
        phone = request.POST.get('phone')
        password = request.POST.get('password')
        code = request.POST.get('code')

        # 匹配验证码
        memory_code = VerificationCode.get_code_by_phone(phone)
        if memory_code != code:
            messages.error(request, '验证码错误')
            return redirect('audience:login')

        # 检测手机号
        if not phone:
            messages.error(request, '请输入手机号')
            return redirect('audience:login')

        user_info_list = UserInfo.objects.filter(tel=phone)
        if user_info_list:
            messages.error(request, '号码已经被注册使用')
            return redirect('audience:login')

        username = get_unique_username()
        with transaction.atomic():
            user = User.objects.create_user(username=username)
            owner = UserInfo(owner=user,
                             user_id=str(uuid.uuid1()).replace('-', ''),
                             tel=phone,
                             name=name,
                             passwd=make_password(password))
            owner.save()

            login(self.request, user)

        response = redirect('anchor:anchor_list')
        return response
예제 #24
0
def register_handle(request):
    # 接收数据
    post = request.POST
    user_name = post.get('user_name')
    pwd = post.get('pwd')
    cpwd= post.get('cpwd')
    email = post.get('email')

    # 判断密码是否一致
    if pwd != cpwd:
        return redirect('/user/register/')
    print ('-------------------------------------')
    # 密码加密
    s1 = sha1()
    s1.update(pwd)
    pwd3 = s1.hexdigest()

    # 用户数据存储
    userinfo = UserInfo()
    userinfo.user_name = user_name
    userinfo.user_password = pwd3
    userinfo.user_email = email
    userinfo.save()
    return redirect('/user/login/')
def add_entry_user_info(user,
                        date):
    new_user = UserInfo(username=user, last_agreement=date, enabled=True)
    new_user.save()
예제 #26
0
def create_user_info(*args, **kwargs):
    
    if kwargs['created']:
        user = kwargs['instance']
        user_info = UserInfo(user=user)
        user_info.save()
예제 #27
0
    def polling_wx(self, request):

        # tip为0表示还未扫码
        self.wtip = 0
        # 定义一个字典,用来返回ajax请求的长轮询结果
        ret = {'status': 408, 'src': None}
        # 获取手机扫描的结果
        # 等待手机扫描的url返回的response
        # https://login.wx.qq.com/cgi-bin/mmwebwx-bin/login?
        # loginicon=true&
        # uuid=IaLXstaSvQ==&该参数就是手机二维码的随机字符串
        # tip=0& 轮询参数,为0表示未扫描,tip=1,表示已扫描。
        # r=-373054253& 该参数不清楚,好像不影响
        # _=1525064306978 该参数为时间戳字符串
        # 手机未扫描的时候,状态码一直为pending,1分钟后,该地址状态码变为200,并返回response:window.code=408;

        phone_url = 'https://login.wx.qq.com/cgi-bin/mmwebwx-bin/login?' \
                    'loginicon=true&' \
                    'uuid={0}&' \
                    'tip={1}&' \
                    'r=-373054253&' \
                    '_={2}'
        # 用format替换占位符生成新的url,向新的url发起请求,并获得结果
        new_url = phone_url.format(self.wcode, self.wtip, self.wctime)
        response = requests.get(new_url)
        print response.text
        # 结果:window.code=408;
        # 当手机扫描后:window.code=201;window.userAvatar = 'data:img/jpg;base64,/9j/4AA......QhCAP/Z';
        # 状态码变为201,并且回传了window.userAvatar=,这个是64位加密的图像,这个图像就是用户头像,
        # 如果字符串window.code=201在返回的结果列表里,获取用户头像,给到前端;
        if 'window.code=201' in response.text:
            #tip为1表示已经扫了码
            self.wtip = 1
            # 用正则获取头像
            tx = re.findall("userAvatar = '(.*)';", response.text)[0]
            ret['status'] = 201
            ret['src'] = tx

        # 这时当在手机上点确认登录后,response.text 返回如下结果:跳转地址和200状态码
        # window.redirect_uri="https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage?ticket=ARokbQGY-KTjkAF2dBPyk3Vh@qrticket_0&uuid=wb7w2dJ_jQ==&lang=zh_CN&scan=1525096971";
        # window.code=200;
        # 现象,在客户端不停的发出轮询,这时应将轮询参数设为1

        elif 'window.code=200' in response.text:

            self.wtip = 1
            # 因为这时要跳转到另一个url,那么势必要验证cookie,那么我们在跳转之前,获取当前cookie
            # 获取new_url的cookie,并加入到全局请求的cookie字典中
            self.req_cookie_dict.update(response.cookies.get_dict())
            # 分析当前跳转的url
            # window.redirect_uri="https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage?
            # ticket=AX6ILPwVZU4XqDS1IbhD_R1e@qrticket_0& 票据
            # uuid=oY-I8yasmA==& 二维码字符串
            # lang=zh_CN&
            # scan=1525099842";
            # 对该url访问(直接用浏览器)_,报初始化失败,要求退出重新登录,只能确定,
            #
            # 那么提示了要初始化,chrome中看到data:img 200后有webwxinit?r=...之类的,猜测是初始化,点击后在Headers查看到
            # Request URL:https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxinit?
            # r=-389991253& 这个参数
            # lang=zh_CN&
            # pass_ticket=DFuNYreWjXQ32P19WYCzsD0rpD1CAJIyuRFM7r2P0lVuWEFQPav6Z6MauvE%252By7zz
            # Request Method:POST
            #  看到是post请求,需要pass_ticket参数
            # 看到初始化之前还有一步:webwxnewloginpage?r=...,点击后,在Headers看到请求的url
            # https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage?
            # ticket=AcLgmk_bwvCk0TcK8WzBAWrl@qrticket_0&uuid=oY-LSj1eJA==&
            # lang=zh_CN&
            # scan=1525103462&
            # fun=new&version=v2&
            # lang=zh_CN
            # Request Method:GET
            # 在初始化之前,对上面url发起了get请求,该请求获得的结果在Response中果如下
            # <error>
            # <ret>0</ret>
            # <message></message>
            # <skey>@crypt_c5957d04_a5a8f371172238039dc15dad01a1bae2</skey>
            # <wxsid>AsQN5PWbtNzblYmK</wxsid>
            # <wxuin>969499281</wxuin> #这个才是识别用户的唯一标识,******
            # <pass_ticket>DFuNYreWjXQ32P19WYCzsD0rpD1CAJIyuRFM7r2P0lVuWEFQPav6Z6MauvE%2By7zz</pass_ticket>
            # <isgrayscale>1</isgrayscale>
            # </error>
            # 这个xml结果就包含初始化需要的pass_ticket参数,
            # 并且该get请求的网址就是在我们获取的网址后加上不变的参数
            # &fun=new&version=v2&lang=zh_CN

            # 因此我们只要把不变的参数拼接后,用get访问,取得结果就可以拿到pass_ticket,然后发送post请求给初始化url
            # 先用正则获取跳转url
            get_url = re.findall('redirect_uri="(.*)";', response.text)[0]
            # 再用获取该跳转地址的变量,因为在跳转的时候,有些变量在构造初始化url时要用
            wxinit_url_start = re.findall('https://(.*)/cgi', get_url)[0]
            print wxinit_url_start
            get_url += '&fun=new&version=v2&lang=zh_CN'
            get_response = requests.get(get_url)
            # print get_response.text
            # 获得的结果同初始化前一步获得的结果相同是个xml文件有初始化需要的参数,ok

            # 获取初始化票据请求的cookie
            self.tick_cookie_dict.update(get_response.cookies.get_dict())

            # 对请求的结果,也就是获取的xml票据字典化,用beautifulsoup将xml转成字典
            from bs4 import BeautifulSoup
            soup = BeautifulSoup(get_response.text, 'html.parser')
            for tag in soup.find():
                self.tick_dict[tag.name] = tag.string

            # 初始化用户,发送post请求,获取response,注意有个form表单选项,要提交
            post_url = 'https://{0}/cgi-bin/mmwebwx-bin/webwxinit?' \
                       'r=-389991253&' \
                       'lang=zh_CN&' \
                       'pass_ticket={1}'
            # 提交的form表单选项
            form_data = {
                'BaseRequest': {
                    'DeviceID':
                    "e921814936107411",  # DeviceID为随机数,可以随意贴写,并不是设备的id
                    'Sid': self.tick_dict['wxsid'],
                    'Skey': self.tick_dict['skey'],
                    'Uin': self.tick_dict['wxuin']  # 这个才是识别用户的唯一标识,******
                }
            }
            # 所有cookie放到一个dict中
            all_cookie = {}
            all_cookie.update(self.req_cookie_dict)
            all_cookie.update(self.tick_cookie_dict)
            # 构建初始化url
            post_url = post_url.format(wxinit_url_start,
                                       self.tick_dict['pass_ticket'])
            # 向初始化url发起post请求,携带cookie,和提交form,将结果交给wxinit_resopse
            wxinit_respose = requests.post(post_url,
                                           json=form_data,
                                           cookies=all_cookie)
            wxinit_respose.encoding = 'utf-8'  # 转码
            # print wxinit_respose.text
            #将返回的结果转成字典
            wxinit_respose_dict = json.loads(wxinit_respose.text)
            # 利用上面的字典打印该用户的微信网页版唯一标识符
            print wxinit_respose_dict['User']['Uin']
            print wxinit_respose_dict['User']['NickName']

            #检查uin用户是否已存在 ,
            #UserInfo用户表中,用户名构成 前缀'__wx__'+uin
            uname = '-wx-' + str(wxinit_respose_dict['User']['Uin'])
            user = UserInfo.objects.filter(uname=uname)

            # 如果存在,则返回用户数据,给浏览器设定session
            if len(user) == 1:
                user = user[0]
                # 设定session
                request.session['user_id'] = user.id
                wxuser = wxuserinfo.objects.filter(wxuser_id=user.id).first()
                request.session['user_name'] = wxuser.wxnickname

            # 否则,创建用户
            # UserInfo用户表中, 用户名构成 前缀'__wx__'+uin
            else:
                #设置6位随机密码
                upwd = ''
                # 实现6位随机字母数字码
                for i in range(6):
                    # 生成一个随机数字,范围与上面相同
                    current = random.randrange(6)
                    # 字母-->猜中了,就使用字母
                    if i == current:
                        # 生成大写字母对应ascii码的随机整数
                        tmp = random.randint(97, 122)
                        # 把整数转成字母
                        tmp = chr(tmp)
                    # 数字-->没猜中,就使用数字
                    else:
                        tmp = random.randint(0, 9)
                        upwd += str(tmp)
                #对密码加密
                m = md5()
                m.update(bytes(upwd))
                upwd3 = m.hexdigest()

                # 创建用户信息表对象
                user = UserInfo()
                user.uname = uname
                user.upwd = upwd3
                user.uemail = uname + '@chw.com'
                user.save()

                # 创建微信用户信息对象
                wxuser = wxuserinfo()
                wxuser.wxuin = str(wxinit_respose_dict['User']['Uin'])
                wxuser.wxnickname = wxinit_respose_dict['User']['NickName']
                wxuser.wxinfo = wxinit_respose_dict['User']
                wxuser.wxuser_id = user.id
                wxuser.save()
                # 把手工输入的账号和密码在前端弹出,用户点确定后再跳转
                ret['username'] = user.uname
                ret['upwd'] = upwd

            # 设定session
            request.session['user_id'] = user.id
            print user.id
            request.session['user_name'] = wxuser.wxnickname
            # 记录替换的id和用户名和密码,
            ret['ids'] = user.id
            ret['unames'] = wxuser.wxnickname

            # 退出微信url
            # quit_url='https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxlogout?' \
            #          'redirect=1&' \
            #          'type=1&' \
            #          'skey=%40crypt_c5957d04_75c6d023fc30a7edf029932e934987eb'
            # Request Method:POST
            # form data:
            # sid:7Sz6ALrFrbNwprQS
            # uin:969499281
            quit_url='https://{0}/cgi-bin/mmwebwx-bin/webwxlogout?' \
                     'redirect=1&' \
                     'type=1&' \
                     'skey={1}'
            # 拼接url
            q_url = quit_url.format(wxinit_url_start, self.tick_dict['skey'])
            quit_form = {
                'sid': self.tick_dict['wxsid'],
                'uin': self.tick_dict['wxuin'],
            }
            # 退出,该退出没有返回,如果没有该动作,则手机上会有‘网页微信已登录,手机通知已关闭'.
            requests.post(q_url, json=quit_form, cookies=all_cookie)

            # 清空二维码和票据,因为微信有个bug,就是结束轮询后,再一次轮询,依然可以用前一次的二维码字符串和票据再登录一次
            # 调用类的构建函数,重新初始化,这样会使微信服务器退出网页登录,释放掉。
            wxlogin.__init__(self)  #这一步在退出的时候也很重要

            # 将状态码置为True,让网页更新
            ret['status'] = True

        return HttpResponse(json.dumps(ret))