• Stars
    star
    256
  • Rank 159,219 (Top 4 %)
  • Language
    Python
  • License
    BSD 4-Clause "Ori...
  • Created over 11 years ago
  • Updated over 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Register, Login, OAuth2, Upload avatar...

Django-siteuser

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

注意

  • 项目中的js依赖jQuery,所以请确保你的站点引入了jQuery
  • 只实现了第三方帐号登录,并没有实现一个本地帐号绑定多个社交帐号的功能。
  • siteuser并没有使用Django自带的User系统。

功能

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

如何使用

安装

pip install django-siteuser

同时会安装此项目的依赖:

在你的模板中引入必要的js文件

<script type="text/javascript" src="{{ STATIC_URL }}js/jquery.js"></script>
<script type="text/javascript" src="{{ STATIC_URL }}js/siteuser.js"></script>

设置settings.py文件

  • 首先设置 django-celery

  • siteuser 加入到 INSTALLED_APPS

    INSTALLED_APPS = (
        # ...
        'djcelery',
        'siteuser.users',
        'siteuser.upload_avatar',
        'siteuser.notify',
    )

    siteuser.users必须添加 的app,另外两个一个用于上传头像,一个是简单的通知系统,可以不添加

  • 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项目.

  • SITEUSER_EMAIL

    siteuser自己写了发邮件的方法,所以也没使用Django自己的EMAI设置 所以你需要设置SITEUSER_EMAIL, 见 local_settings.py.example

    其中需要说明的是 display_from 这个设置, 如果你没有自己架设SMTP SERVER,也没有购买发送邮件的服务, 而是直接在gmail, 163, sohu等email提供商那儿免费申请了个邮箱, 那么你的邮箱肯定是 [email protected]这种形式的。 这时候如果你想在别人的收件箱里显示 [email protected] 那么就把 display_from 设置成此值。如果不设置,那么默认就是from

模板

你需要自己完成 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 就可以测试注册,登录,头像,第三方登录

More Repositories

1

social-oauth

OAuth2 for Chinese social sites
Python
324
star
2

make-proxy

HTTP/HTTPS/Socks4/Socks5 proxy written in Erlang
Erlang
270
star
3

renren-relationship

人人好友关系
Python
186
star
4

seven-cow

Yet another qiniu cloud storage Python SDK. More Pythonic, More simple to use
Python
132
star
5

django-social-login

[DISCARDED]A Django APP for Social accounts login via OAuth2 Service
Python
104
star
6

codebattle-ai

AI Example for Codebattle
Erlang
45
star
7

django-upload-avatar

A django app for upload avatars
Python
40
star
8

paper

Feel free about writing blog. This is a simple blog system, Just bloging, Implemented on bottle
Python
35
star
9

playground

Erlang
32
star
10

duckadmin

A Django reusable app for show and operate custom forms in admin.
Python
30
star
11

abchat

Abstract Simple Chat Server Based on Gevent
Python
24
star
12

timerush

Python Timer Framework
Python
21
star
13

djangowebsocket

Python
20
star
14

i3-dzen2-bridge

Bridged the i3status and dzen2 to make dzen2 display icons
Python
20
star
15

vim-linemovement

simplify the line movement in vim
Vim Script
20
star
16

unity3d-scripts

A Collections of useful Scripts/Examples for Unity3d
C#
18
star
17

codebattle-server

codebattle server
Erlang
17
star
18

daemonize

Python Daemonize
Python
15
star
19

redis-lua-scripts

Lua script using with Redis
Python
14
star
20

vim-alignment

Align What You Want!
Vim Script
13
star
21

eipp

A C++11 Header Only Library for using erlang ei library.
C++
13
star
22

python-gears

A BBS Based On Django.
JavaScript
11
star
23

myblogposts

Posts of my blog
10
star
24

learn-you-some-erlang-zh

learn you some erlang 的简体中文翻译
9
star
25

codebattle-client

unity3d client of codebattle
C#
7
star
26

TRsound

For prononnce words with a terminal translation
C
4
star
27

gstatus

display git log in browser
Python
3
star
28

codebattle-proto

proto files for codebattle
3
star
29

django-admin-lastlocation

Return the last location after editing some item
Python
3
star
30

dianjing

Python
2
star
31

myfirefox

firefox plugins
2
star
32

redis-benchmark

Erlang
2
star
33

notebook

Erlang
2
star
34

arrow

Erlang Datetime Utils
Erlang
2
star
35

termgif

record your terminal to animated gif
C
2
star
36

mytools

自己的一些脚本工具
Python
1
star
37

sudoku

sudoku solved in my own way
C++
1
star
38

aoi

C++
1
star
39

smoke

A set collections of WSGI Middleware
Python
1
star
40

sanguo-server

Python
1
star