django怎么管理用户(django自定义用户)

导读:今天首席CTO笔记来给各位分享关于django怎么管理用户的相关内容,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

请教Django的User/Group/Permission管理

Django的用户权限管理也是业界比较通用的RBAC(Role-Based Access Control)的权限控制模型。其实很简单:看一个用户是否有权限访问某页面(view),就看这个用户是否拥有访问这个页面所必需的角色(Role)。而一个用户的所拥有的所有的角色有两个途径获得,1、是直接赋给这个用户的角色,2、是这个用户所属的所有小组所拥有的角色,这个用户间接地就拥有了这些权限角色。

如何利用Django-auth做用户认证

首先,让我们开始创建项目和APP,前面我也很详细的说明了如何创建项目和APP。

创建数据库,和相关用户的权限。

root@CD-FTP-VPN:/opt/jastme# tree

.

|-- jastme

| |-- __init__.py

| |-- __init__.pyc

| |-- settings.py

| |-- settings.pyc

| |-- urls.py

| |-- urls.pyc

| |-- wsgi.py

| `-- wsgi.pyc

|-- login

| |-- admin.py

| |-- __init__.py

| |-- __init__.pyc

| |-- models.py

| |-- models.pyc

| |-- tests.py

| |-- views.py

| `-- views.pyc

|-- manage.py

`-- start.sh

2 directories, 18 files

root@CD-FTP-VPN:/opt/jastme#

使用python manage.py syncdb 来创建一个叫jastme,密码为jastme的超级用户。我们可以用Django-admin来管理这些用户。

首先看看setting.py

root@CD-FTP-VPN:/opt/jastme# more jastme/settings.py

"""

Django settings for jastme project.

For more information on this file, see

For the full list of settings and their values, see

"""

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)

import os

BASE_DIR = os.path.dirname(os.path.dirname(__file__))

# Quick-start development settings - unsuitable for production

# See

# SECURITY WARNING: keep the secret key used in production secret!

SECRET_KEY = 'r!1=i^3qhwglr(zf*9n*ii!b_oy2h()ics(6(de3wuo0-oh8h'

# SECURITY WARNING: don't run with debug turned on in production!

DEBUG = True

TEMPLATE_DEBUG = True

ALLOWED_HOSTS = []

# Application definition

INSTALLED_APPS = (

# 'django.contrib.admin', #注释掉admin

'django.contrib.auth',

'django.contrib.contenttypes',

'django.contrib.sessions',

'django.contrib.messages',

'django.contrib.staticfiles',

'login',

)

MIDDLEWARE_CLASSES = (

'django.contrib.sessions.middleware.SessionMiddleware',

'django.middleware.common.CommonMiddleware',

# 'django.middleware.csrf.CsrfViewMiddleware', #这个中间件是防止跨站攻击的。有意思的朋友可以去搜索下。

'django.contrib.auth.middleware.AuthenticationMiddleware',

'django.contrib.auth.middleware.SessionAuthenticationMiddleware',

'django.contrib.messages.middleware.MessageMiddleware',

'django.middleware.clickjacking.XFrameOptionsMiddleware',

)

ROOT_URLCONF = 'jastme.urls'

WSGI_APPLICATION = 'jastme.wsgi.application'

# Database

#

DATABASES = { #数据库的相关配置

'default': {

'ENGINE': 'django.db.backends.mysql',

'NAME':'jastme',

'USER':'jastme',

'PASSWORD':'jastme',

'HOST':'localhost',

'PORT':'3306',

}

}

# Internationalization

#

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'Asia/Shanghai'

USE_I18N = True

USE_L10N = True

USE_TZ = True

# Static files (CSS, JavaScript, Images)

#

STATIC_URL = '/static/'

TEMPLATE_DIRS =( #模板的路径

'/var/www/jastme/',

)

views.py

root@CD-FTP-VPN:/opt/jastme# more login/views.py

from django.shortcuts import render

from django.contrib import auth

# Create your views here.

from django.shortcuts import render_to_response

from django.contrib.auth import authenticate, login

from django.template.loader import get_template

from django.template import Context

from django.http import HttpResponse,HttpResponseRedirect

from django.contrib.auth.decorators import login_required

def my_login(request): #我们自定义一个函数,这个函数名字一定不要写成login,因为Django有有login模块。

if request.method == 'POST': #我们使用POST的方法来获取从HTML传递过来的表单内容

username = request.POST['username'] #获取账号和密码

password = request.POST['password']

user = authenticate(username=username, password=password) #我们用user来实例化 authenticate(username=username, password=password)

if user is not None: #用户名不为空

if user.is_active: #为激活用户

login(request, user) #调用django.contrib.auth中的login函数,可以具体去看看源码

return HttpResponseRedirect('/main') #登陆成功就重定向到主页

else:

login_error = 'login error.'

return render_to_response('login.html', {'login_error' : login_error, 'is_display' : 'display:block'}) #失败则返回登陆页面

return render_to_response('login.html', {'is_display' : 'display:none'}) #同理

@login_required #调用了这个修饰器,就可以让这个页面在成功登陆后才能访问

def main(request):

return HttpResponse('login sucess') #直接返回这个字符串

再看看urls.py

root@CD-FTP-VPN:/opt/jastme# more jastme/urls.py

from django.conf.urls import patterns, include, url

#from django.contrib import admin

from login.views import my_login,main #这里是我们导入的项目中的views.py中的模块,就是我们自己写的函数

#from django.contrib.auth.views import login, logout

urlpatterns = patterns('',

# Examples:

# url(r'^$', 'jastme.views.home', name='home'),

# url(r'^blog/', include('blog.urls')),

# url(r'^admin/', include(admin.site.urls)),

(r'^main/$',main),

(r'^login/$',my_login),

)

login.html

root@CD-FTP-VPN:/var/www/jastme# pwd

/var/www/jastme

root@CD-FTP-VPN:/var/www/jastme# ls

login.html

form action="" method="POST" #在此页面以POST的方式来提交参数

input type=text name="username"

input type=text name="password"

input type=submit value="send"

/form

django怎么管理用户(django自定义用户)  第1张

django admin实现后台多用户隔离

很多人说django自带的后台只能用来做管理,其实简单的多用户发布需求还是可以用自带的admin模块来做的。核心是使用 request.user 获取当前登录用户,然后根据用户筛选后台显示内容。

复杂的用户权限管理使用django-guardian等组件

模拟了一个根据用户每天输入的数据,生成可视化报表的项目。预想的是根据不同的报表类型,预设不同的数据模板。前端请求的时候发送报表类型和数据范围用户等信息到后端。后端返回数据后交给前端echart处理。

花了整个下午才完成基本的后台,因为目的是实现多用户,后面的部分有空再去写。

![HTZMQ)4(7BXHAD`K~F]QSLR.png]( )

创建和修改model时,会显示关联的外键的所有的值,比如显示出所有的用户来了。使用 get_form 方法隐藏外键字段(例如user), save_model 设置user默认值,也别忘了列表页的筛选 get_queryset

django1.9.5怎么建立超级用户?

首先我们要新建一个用户名,用来登陆管理网站,可以使用如下命令:

python manage.py createsuperuser

输入想要使用的用户名:

Username (leave blank to use 'administrator'): user01

输入email:

Email address: (在这里输入你的自己的邮箱帐号)

输入密码,需要输入两次,并且输入密码时不会显示出来:

Password:

Password (again):

当两次密码都相同的时候,就会提示超级帐号创建成功。

Superuser created successfully.

运行服务:

python manage.py runserver

python创建并打开管理员账户

在 Python web 应用中,通常使用框架(如 Django、Flask 等)来管理用户账号,因此创建超级管理员账号的方式可能会因框架而异。下面以 Django 为例,介绍创建超级管理员账号的方法。首先,你需要安装 Django 并创建一个 Django 项目。然后,你可以使用以下命令创建超级管理员账号:python manage.py createsuperuser运行该命令后,Django 会提示你输入超级管理员账号的用户名、邮箱地址和密码。输入完成后,Django 会为你创建一个超级管理员账号。

有大拿在Django中用过LDAP来管理用户吗

使用环境:

python 2.7

django 1.3

python-ldap-2.4.3

django-auth-ldap-1.0.12

settings.py:

import ldap

from django_auth_ldap.config import LDAPSearch,PosixGroupType

AUTH_LDAP_SERVER_URI = 'ldap://*.*.*.*:389' #服务器URI

AUTH_LDAP_BIND_DN = "cn=admin,dc=qfei,dc=com"

AUTH_LDAP_BIND_PASSWORD = "123456"

AUTH_LDAP_USER_SEARCH = LDAPSearch("ou=staff,dc=qfei,dc=com", #查询用户

ldap.SCOPE_SUBTREE, "(uid=%(user)s)")

AUTH_LDAP_GROUP_SEARCH = LDAPSearch("ou=staff,dc=qfei,dc=com", #查找组

ldap.SCOPE_SUBTREE, "(objectClass=posixGroup)"

)

AUTH_LDAP_GROUP_TYPE = PosixGroupType(name_attr="cn")

AUTH_LDAP_USER_FLAGS_BY_GROUP = {

"is_staff": "cn=tech,ou=Tech,ou=Staff,dc=qfei,dc=com",

"is_active": "cn=tech,ou=Tech,ou=Staff,dc=qfei,dc=com",

"is_superuser": "cn=tech,ou=Tech,ou=Staff,dc=qfei,dc=com", #验证 Django 的 User 的is_staff,is_active,is_superuser

}

AUTH_LDAP_USER_ATTR_MAP = { #把LDAP中用户条目的属性 映射到 Django 的User

"username":"uid",

"password":"userPassword",

"first_name": "givenName",

"last_name": "sn",

"email":"mail",

}

AUTH_LDAP_MIRROR_GROUPS=True #注意 此为重点:当这个值为 True, LDAP的用户条目映射并创建 Django User 的时候,会自动映创建Group

AUTH_LDAP_ALWAYS_UPDATE_USER = True #是否每次都从LDAP 把用户信息 更新到 Django 的User

AUTH_LDAP_FIND_GROUP_PERMS = True #如果为True, LDAPBackend将提供基于LDAP组身份验证的用户属于的组的权限

AUTH_LDAP_CACHE_GROUPS = True #如果为True,LDAP组成员将使用Django的缓存框架。

AUTH_LDAP_GROUP_CACHE_TIMEOUT = 1800 #缓存时长

AUTHENTICATION_BACKENDS=( #设置使用 LDAPBackend

"django_auth_ldap.backend.LDAPBackend",

"django.contrib.auth.backends.ModelBackend",

)

注:

1,需要创建 django 的 User Group 表

2,当LDAP条目 同步至 django User,Group 后,同关系型数据库一样 操作 数据即可

不足:暂时 未实现 django 表 至LDAP 的数据双向同步

结语:以上就是首席CTO笔记为大家介绍的关于django怎么管理用户的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收藏关注本站。

以上内容为新媒号(sinv.com.cn)为大家提供!新媒号,坚持更新大家所需的互联网后端知识。希望您喜欢!

版权申明:新媒号所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,不声明或保证其内容的正确性,如发现本站有涉嫌抄袭侵权/违法违规的内容。请发送邮件至 k2#88.com(替换@) 举报,一经查实,本站将立刻删除。

(0)
上一篇 2023-09-23
下一篇 2023-09-23

相关推荐

发表回复

登录后才能评论