python,Django實(shí)現(xiàn)的淘寶客登錄功能示例
本文實(shí)例講述了python,Django實(shí)現(xiàn)的淘寶客登錄功能。分享給大家供大家參考,具體如下:
在整理python,django資料的時(shí)候,發(fā)現(xiàn)了這個(gè)東西,也許是當(dāng)初某位網(wǎng)友或者朋友發(fā)過(guò)來(lái)參考或者一起探討修改的東西,現(xiàn)在不記得了,也許taobao的接口都變了也有可能,但總體來(lái)說(shuō)還是有參考價(jià)值的,主要是做淘寶客客或者返利網(wǎng)會(huì)用到taobao登錄而用的.
參考代碼如下:
#!/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()
#更新應(yīng)用用戶綁定
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 認(rèn)證返回值中的簽名
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后,字符串最后會(huì)有 \n 符, 因此需要清除才能驗(yàn)證
if top_sign == local_sign.strip(): # 清除 \n
# 創(chuàng)建/返回淘寶賬戶
tb_user, tb_user_created = taobao_user.objects.get_or_create(id=int(visitor_id),
nick=username)
#建立系統(tǒng)用戶, 用戶名存在則創(chuàng)建隨機(jī)數(shù)擴(kuò)展
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
# 保存返回的信息:過(guò)期時(shí)間 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)
#如果應(yīng)用賬戶沒(méi)有綁定系統(tǒng)用戶,則用戶第一次時(shí)可以修改用戶名
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)
希望本文所述對(duì)大家基于Django框架的Python程序設(shè)計(jì)有所幫助。
- 詳解Django框架中用戶的登錄和退出的實(shí)現(xiàn)
- 淺談django中的認(rèn)證與登錄
- django的登錄注冊(cè)系統(tǒng)的示例代碼
- 在Django中限制已登錄用戶的訪問(wèn)的方法
- Django自定義插件實(shí)現(xiàn)網(wǎng)站登錄驗(yàn)證碼功能
- django用戶注冊(cè)、登錄、注銷和用戶擴(kuò)展的示例
- Python中Django框架利用url來(lái)控制登錄的方法
- Django實(shí)戰(zhàn)之用戶認(rèn)證(用戶登錄與注銷)
- Django中使用第三方登錄的示例代碼
- django用戶登錄和注銷的實(shí)現(xiàn)方法
- Django框架實(shí)現(xiàn)的普通登錄案例【使用POST方法】
- Django框架使用內(nèi)置方法實(shí)現(xiàn)登錄功能詳解
相關(guān)文章
python實(shí)現(xiàn)高斯判別分析算法的例子
今天小編就為大家分享一篇python實(shí)現(xiàn)高斯判別分析算法的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12
python 快速把超大txt文件轉(zhuǎn)存為csv的實(shí)例
今天小編就為大家分享一篇python 快速把超大txt文件轉(zhuǎn)存為csv的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-10-10
用python實(shí)現(xiàn)監(jiān)控視頻人數(shù)統(tǒng)計(jì)
今天教各位小伙伴學(xué)習(xí)怎么用python實(shí)現(xiàn)監(jiān)控視頻人數(shù)統(tǒng)計(jì),文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python的小伙伴有很大的幫助,需要的朋友可以參考下2021-05-05

