Django Admin——批量员工用户创建/从 CSV 文件导入

Posted

技术标签:

【中文标题】Django Admin——批量员工用户创建/从 CSV 文件导入【英文标题】:Django Admin --Bulk Staff User Creation/Import from CSV file 【发布时间】:2018-09-26 17:43:46 【问题描述】:

我有一个问题。我必须从 excel/csv 文件导入我的 Django Admin 应用程序中允许的所有用户。有人可以建议,指导我如何在 Django 管理界面中实现这个东西。有我可以使用的脚本吗?他们都将被允许登录到我的 Django 应用程序,并且他们都将自动成为员工用户。

【问题讨论】:

你能告诉我们你的尝试吗?为什么不只是 open 文件和 for 循环通过它初始化和保存 User 模型,因为你去或使用 docs.djangoproject.com/en/dev/ref/models/querysets/…? 我无法在文档中找到某些内容。看到了第 3 方插件,但适用于模型,无法看到 Django 默认用户创建部分的内容。 创建用户时,您可以将is_staff 设置为True,例如`User(..., is_staff=True) 或使用docs.djangoproject.com/en/2.1/ref/contrib/auth/#manager-methods 你可以试试这个:github.com/django-import-export/django-import-export 【参考方案1】:

所以对于那些将在我的鞋子,请看看下面的诀窍!

import csv, sys, os, django


project_dir = "/parcare/src/"
sys.path.append(project_dir)
os.environ['DJANGO_SETTINGS_MODULE'] = 'adp_parking.settings'
# os.environ.setdefault("DJANGO_SETTINGS_MODULE", __file__)
import django
django.setup()


from django.contrib.auth import authenticate
from django.contrib import admin
from django.contrib.auth.models import User

from django.contrib.auth import get_user_model
from django.conf import settings
User = get_user_model()

file = 'import.csv'

data = csv.reader(open(file), delimiter=",")
for row in data:
    if row[0] != "Number":
        # Post.id = row[0]
        Post=User()
        Post.password = row[1]
        Post.last_login = "2018-09-27 05:51:42.521991"
        Post.is_superuser = "0"
        Post.username = row[2]
        Post.first_name = row[3]
        Post.email = row[4]
        Post.is_staff = "1"
        Post.is_active = "1"
        Post.date_joined = "2018-09-27 05:14:50"
        Post.last_name=row[5]
        Post.save()

这就是我的 import.csv 文件的样子

它们被添加到我所拥有的之上

现在唯一的一步就是授予所有这些权限。 只有非管理员的第二条记录有权限。

PS 添加一个散列通行证,没有它,用户将无法工作。所以你必须创建一个测试通过,并使用插入到通过行字段中的哈希==>这将像一个魅力。

【讨论】:

这样设置密码将无法登录。您需要将其包装在 from django.contrib.auth.hasers import make_password make_password 函数中。【参考方案2】:
from django.http import JsonResponse
from csv import reader
from django.contrib.auth.models import User

def userdata(request):
with open('templates/csv/your_file.csv', 'r') as csv_file:
    csvf = reader(csv_file)
    data = []
    for username, password, *__ in csvf:
        user = User(username=username)
        user.set_password(password)
        data.append(user)
    User.objects.bulk_create(data)
    
return JsonResponse('user csv is now working', safe=False)

然后在你的 urls.py 中

path('userdata/', userdata, name='userdata')

##只需重定向到url,所有数据都会推送到数据库中

【讨论】:

以上是关于Django Admin——批量员工用户创建/从 CSV 文件导入的主要内容,如果未能解决你的问题,请参考以下文章

Django admin - 模型对超级用户可见,而不是员工用户

在 Django admin 中,如何按组过滤用户?

如何从 django admin 添加多个客户地址

Django项目:CRM(客户关系管理系统)--64--54PerfectCRM实现admin批量生成上课记录

Django Admin - 允许为 is_staff 用户显示模型

stark组件之批量操作模仿Django的admin