本篇文章给大家分享的是有关python,Django实现的淘宝客登录功能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
创新互联服务项目包括兴城网站建设、兴城网站制作、兴城网页制作以及兴城网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,兴城网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到兴城省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!参考代码如下:
#!/usr/bin/python #coding:utf-8 import datetime, urllib, base64, random from hashlib import md5 from django.conf import settings from django.contrib import auth from django.contrib.auth.models import User from django.core.urlresolvers import reverse from django.http import HttpResponseRedirect from django.shortcuts import render from app.taobao.backends import TaobaoBackend from app.taobao.models import User as taobao_user from app.taobao.forms import UserOnceChange from pyapi.taobao.top import Request def authenticated(request, template): if request.method == 'POST': form = UserOnceChange(request=request, data=request.POST) if form.is_valid(): request.user.username = form.cleaned_data['username'] password = form.cleaned_data.get('password', None) if password: request.user.set_password(form.cleaned_data) request.user.save() #更新应用用户绑定 tb_user = request.user.taobao.all()[0] tb_user.has_bind_user=True tb_user.save() return HttpResponseRedirect(reverse('user')) top_session = request.GET.get('top_session', None) top_parameters = request.GET.get('top_parameters', None) top_sign = str(request.GET.get('top_sign', None)) #解析 top parameters if top_parameters: back_parameters = base64.decodestring(urllib.unquote(top_parameters)) infos = dict(k.split("=") for k in back_parameters.split("&")) username = infos.get('visitor_nick', None) visitor_id = infos.get("visitor_id", None) # validate sign 认证返回值中的签名 local_sign_str = '%s%s%s%s' % (settings.TAOBAO_APP_KEY, top_parameters, top_session, settings.TAOBAO_APP_SECRET) local_sign = base64.encodestring(md5(local_sign_str).digest()) #注意 base64 encode后,字符串最后会有 \n 符, 因此需要清除才能验证 if top_sign == local_sign.strip(): # 清除 \n # 创建/返回淘宝账户 tb_user, tb_user_created = taobao_user.objects.get_or_create(id=int(visitor_id), nick=username) #建立系统用户, 用户名存在则创建随机数扩展 if tb_user.user_id is None: try: User.objects.get(username=username) django_user_username = username tb_user.has_bind_user = True except: django_user_username = '%s_%s' % (username, random.randint(1000, 10000)) django_user, django_user_created = User.objects.get_or_create(username=django_user_username) if django_user_created: django_user.set_password(visitor_id) django_user.save() tb_user.user = django_user # 保存返回的信息:过期时间 token ts等 tb_user.expires_in = datetime.datetime.now() + datetime.timedelta(seconds=int(infos.get("expires_in", 0))) tb_user.ts = infos.get("ts", '') tb_user.refresh_token = infos.get("refresh_token", '') tb_user.save() # update user profile in taobao auth backend user = auth.authenticate(id=tb_user.id, nick=tb_user.nick) if user: auth.login(request, user) #如果应用账户没有绑定系统用户,则用户第一次时可以修改用户名 if not tb_user.has_bind_user: form = UserOnceChange(request=request, initial={'username':tb_user.user.username, 'password':tb_user.id}) return render(request, template, locals()) return HttpResponseRedirect(settings.TAOBAO_AUTH_URL)
以上就是python,Django实现的淘宝客登录功能,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注创新互联行业资讯频道。