Coder Social home page Coder Social logo

django-siteuser's Introduction

Django-siteuser

集成用户注册,登录,上传头像,第三方登录等功能。此项目的目标是当建立新站点的时候,不再重头写用户系统。

更新时间状态
2013-06-15完成登录用户修改密码和忘记密码时重置密码
2013-06-12开发中

注意

  • 项目中的js依赖jQuery,所以请确保你的站点引入了jQuery
  • 项目依赖于 socialoauth
  • 只实现了第三方帐号登录,并没有实现一个本地帐号绑定多个社交帐号的功能。
  • siteuser并没有使用Django自带的User系统,所以login_required不可用,请使用login_neededfrom siteuser.decorators import login_needed
  • 也正因为siteuser并没有与Django自身结合的太深,所以在去除掉一些Django特性后(ORM, Signals), 此项目很容易移植到tornado, flask, bottle等各种框架中

功能

  • 注册,登录
  • 登录用户修改密码
  • 忘记密码时重置密码
  • 上传头像 (带有剪裁预览功能)
  • 第三方帐号登录

TODO

  • 重置密码异步发送邮件(还是由用户自己的项目来做?)
  • 站内信/消息通知

如何使用

  • 引入必要的js文件

    <script type="text/javascript" src="{{ STATIC_URL }}js/siteuser.js"></script>
  • siteuser 加入到 INSTALLED_APPS

    INSTALLED_APPS = (
        # ...
        'siteuser.users',
        'siteuser.upload_avatar',
    )
  • siteuser.SITEUSER_TEMPLATE 加入 TEMPLATE_DIRS 注意: 这里不是字符串,所以你需要在settings.py 文件中 先 import siteuser

  • 'siteuser.context_processors.social_sites' 加入 TEMPLATE_CONTEXT_PROCESSORS

  • 'siteuser.middleware.User' 加入 MIDDLEWARE_CLASSES

  • url(r'', include('siteuser.urls')) 加入到项目的 urls.py

  • AVATAR_DIR - 告诉siteuser将上传的头像放置到哪个位置

  • USING_SOCIAL_LOGIN 是否开启第三方帐号登录功能。(若不设置,默认为 False)

  • SOCIALOAUTH_SITES - 仅在 USING_SOCIAL_LOGIN为True的情况下需要设置。第三方登录所需的配置。见socialoauth文档

  • SITEUSER_EXTEND_MODEL 不设置此项,example一样可以运行,但实际项目中,肯定会根据项目本身来设定用户字段. 默认的字段请查看 SiteUser.

    支持两种方式来扩展SiteUser字段

    • 直接在settings.py中定义

      # project settings.py
      from django.db import models
      class SITEUSER_EXTEND_MODEL(models.Model):
          # some fields...
          class Meta:
              abstract = True
    • 将此model的定义写在其他文件中,然后在settings.py中指定。

    example使用的第二种,具体可以查看example项目.

  • SITEUSER_ACCOUNT_MIXIN siteuser 提供了登录,注册的template,但只是登录,注册form的模板, 并且siteuser不知道如何将这个form模板嵌入到你的站点中,以及不知道在渲染模板的时候还要传入什么额外的context, 所以你需要在自己定义这个设置。

    SITEUSER_EXTEND_MODEL 一样,同样有两种方法定义,

    • 直接在 settings.py 中定义

      class SITEUSER_ACCOUNT_MIXIN(object):
          login_template = 'login.html'           # 你项目的登录页面模板
          register_template = 'register.html'     # 你项目的注册页面模板
          reset_passwd_template = 'reset_password.html'   # 忘记密码的重置密码模板
          change_passwd_template = 'change_password.html' # 登录用户修改密码的模板
          reset_passwd_email_title = u'重置密码'    # 重置密码发送电子邮件的标题
          reset_passwd_link_expired_in = 24        # 重置密码链接多少小时后失效
          
          def get_login_context(self, request):
              return {}
              
          def get_register_context(self, request):
              return {}

      这两个方法正如其名,request是django传递给view的request,你在这里返回需要传递到模板中的context即可 在这里查看默认的 SiteUserMixIn

    • 第二中方法是将此Mixin定义在一个文件中,然后在settings.py中指定

    example使用的第二种,具体可以查看example项目.

模板

你需要自己完成 login.html, register.html, account_settings.html 模板。(名字可以自己取,只要在代码中 等对应起来就行),你只需要干一件事情,就是在你的模板的 include 相应的siteuser模板即可。

比如 login.html 中在你定义的位置 {% include 'siteuser/login.html' %},

account_settings.html 中 {% include 'siteuser/upload_avatar.html' %}

具体可以参考example项目

做完上面的设置后, python manage.py validate 检测无误后,syncdb,runserver 就可以测试注册,登录,头像,第三方登录

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.