当前位置:首页 > 编程教程 > Python技术文章 > python,Django实现的淘宝客登录功能示例

python,Django实现的淘宝客登录功能

  • 发布时间:
  • 作者:码农之家
  • 点击:57

这篇文章主要知识点是关于python、Django、淘宝客、登录、的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下电子书

跟老齐学Python:轻松入门
  • 类型:Python大小:46.6 MB格式:PDF作者:齐伟
立即下载

python,Django实现的淘宝客登录功能示例

本文实例讲述了python,Django实现的淘宝客登录功能。分享给大家供大家参考,具体如下:

在整理python,django资料的时候,发现了这个东西,也许是当初某位网友或者朋友发过来参考或者一起探讨修改的东西,现在不记得了,也许taobao的接口都变了也有可能,但总体来说还是有参考价值的,主要是做淘宝客客或者返利网会用到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()
      #更新应用用户绑定
      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)

希望本文所述对大家基于Django框架的Python程序设计有所帮助。

以上就是本次给大家分享的关于java的全部知识点内容总结,大家还可以在下方相关文章里找到相关文章进一步学习,感谢大家的阅读和支持。

您可能感兴趣的文章:

  • 分享Python Django 前后端分离 API的方法步骤
  • PythonWeb项目Django部署在Ubuntu18.04腾讯云主机上示例代码
  • Python通过pip安装Django步骤代码
  • python django 原生sql 获取数据的方法分享
  • python登录WeChat微信实现自动回复功能讲解
  • 解析Python登录接口及流程图
  • 实例详解如何实现Python登录系统界面
  • Python登录状态进行接口测试 Python 保持登录状态进行接口测试的方法示例
  • python登录密码重置的操作方法
  • Python实现ssh批量登录并执行命令的方法分享
  • 相关电子书
    学习笔记
    网友NO.838471

    Python使用Django实现博客系统完整版

    今天花了一些时间搭了一个博客系统,虽然并没有相关于界面的美化,但是发布是没问题的。 开发环境 操作系统:windows 7 64位 Django: 1.96 Python:2.7.11 IDE: PyCharm 2016.1 功能篇 既然是博客系统,发布的自然是博客了。让我们想想,一篇博客有什么属性。所以我们要有能添加博客,删除博客,修改博客,以及给博客发评论,贴标签,划分类等功能。 关系分析 属性 博客:标题,内容。 标签:标签名 分类:分类的名称 评论:评论人,评论人email,评论内容 关系 博客:一篇博客可以有多个标签,多个评论,属于一个分类 标签:一类标签可以赋予多篇博客,一个博客也可以由多个标签,所以是多对多的关系 分类:一个分类内部可以有多个博客,所以和博客是一对多的关系 评论:很明显一个评论属于一个博客,而一个博客可以有很多的评论,所以是一对多……

    网友NO.366421

    python+pycharm+django admin css样式问题解决方案

    最近打算学习一下Python,基础知识有了大概的了解,想上手搞搞东西。 我用的python 3.5+pycharm+django 1.11.2 在使用Django,打开127.0.0.1:8000/admin时,发现admin模块css样式文件丢失,无法调用 按F12 发现admin/base.html文件出问题。 base.html文件路径: python35\Lib\site-packages\django\contrib\admin\templates\admin 解决方法: 1、删除base》html头部中 !DOCTYPE html 2、添加meta http-equiv='Content-type' content='text/htm' 以上就是python+pycharm+django admin css样式问题解决方案的详细内容,更多请关注码农之家其它相关文章! ……

    网友NO.912263

    Pycharm+django2.2+python3.6+MySQL实现简单的考试报名系统

    1 准备工作 1.1 环境搭建 1.1.1 安装python3.6 python安装官网 1.1.2 安装django2.2 pip install django(==2.2.0) //不加版本默认安装最新版 1.1.3 安装pycharm(社区版,官网下载安装即可) 在安装完成后要配置好需要的第三方库:(pip下载,推荐在pycharm下也配置虚拟环境) Django2.2 连接mysql需要的库:PyMySQL, mysql, mysqlclinet 验证码用到的库: django-simple-captcha (只需在虚拟环境下配置) (由于下载库较多,忘记用到的库,下附截图) 1.1.4 安装数据库, 我使用的是MySQL,推荐安装界面管理文件(我使用的是MySQLWorkbench)数据库配置,settings.py文件 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME':'cet', #数据库名字 'USER':'root', #登陆数据库的用户名 'PASSWORD':'123', #登陆数据库的密码 'HOST':'localhost', #数据库的ip地址 'PORT':'3306', #ip地址的端口号,默认(3306) }} __init__.py里面导入……

    <
    1
    >

    Copyright 2018-2020 www.xz577.com 码农之家

    版权投诉 / 书籍推广 / 赞助:520161757@qq.com