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的Tornado框架中實(shí)現(xiàn)簡(jiǎn)單的在線代理的教程
這篇文章主要介紹了在Python的Tornado框架中實(shí)現(xiàn)簡(jiǎn)單的在線代理的教程,代理功能是一個(gè)常見(jiàn)的網(wǎng)絡(luò)編程實(shí)現(xiàn),需要的朋友可以參考下2015-05-05
Python實(shí)現(xiàn)隨機(jī)生成有效手機(jī)號(hào)碼及身份證功能示例
這篇文章主要介紹了Python實(shí)現(xiàn)隨機(jī)生成有效手機(jī)號(hào)碼及身份證功能,結(jié)合完整實(shí)例形式分析了Python基于手機(jī)號(hào)與身份證算法實(shí)現(xiàn)隨機(jī)手機(jī)號(hào)及身份證的生成功能,涉及Python日期、隨機(jī)數(shù)、文件讀取等相關(guān)操作技巧,需要的朋友可以參考下2017-06-06
python區(qū)塊鏈實(shí)現(xiàn)簡(jiǎn)版工作量證明
這篇文章主要為大家介紹了python區(qū)塊鏈實(shí)現(xiàn)簡(jiǎn)版工作量證明詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
python3注冊(cè)全局熱鍵的實(shí)現(xiàn)
這篇文章主要介紹了python3注冊(cè)全局熱鍵的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03
Python利用pdfplumber庫(kù)提取pdf中的文字
pdfplumber是一個(gè)用于從PDF文檔中提取文本和表格數(shù)據(jù)的Python庫(kù),它可以幫助用戶輕松地從PDF文件中提取有用的信息,例如表格、文本、元數(shù)據(jù)等,本文將給大家介紹如何通過(guò)Python的pdfplumber庫(kù)提取pdf中的文字,需要的朋友可以參考下2023-05-05
Scrapy爬蟲(chóng)文件批量運(yùn)行的實(shí)現(xiàn)
這篇文章主要介紹了Scrapy爬蟲(chóng)文件批量運(yùn)行的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
python抓取京東商城手機(jī)列表url實(shí)例代碼
python抓取京東商城手機(jī)列表url實(shí)例分享,大家參考使用吧2013-12-12

