Python脚本不能与django shell一起使用

问题描述 投票:0回答:1

我已经使用csv文件向create users编写了脚本。我必须检查sso username是否有效使用api请求以及用_validate_user函数编写。为了使api请求我使用urllib3。示例代码如下。

import csv
import urllib3.request
from django.contrib.auth.models import User

def _validate_user(sso_username):
    http = urllib3.PoolManager()
    fl_name = '<url>' + sso_username
    site_data = http.request('GET', fl_name)
    _data = site_data.data
    print(_data)

FILENAME = r'./csv/usernames.csv'

with atomic():
    with open(FILENAME, 'rt',  encoding='utf-8-sig') as f:
        reader = csv.DictReader(f)
        for i, row in enumerate(reader):
            user_name = row['username']
            if _validate_user(user_name):
                User.objects.get_or_create(
                    username=row['username'],
                    password='password',
                )
                print("User added")
            else:
                print("Invaid user")

当我使用python3 manage.py shell运行代码并逐行输入代码时,我没有收到任何错误,一切都按预期工作。

当我使用python3 manage.py shell < utility_folder/load_users.py运行脚本我得到NameError: name 'urllib3' is not defined at line number 6。我在这里缺少什么我试过用requests模块也没多大帮助。

Django version is 1.11 and python 3.6

请指教。

python django nameerror urllib3 django-shell
1个回答
2
投票

使用exec(open("utility_folder/load_users.py").read())进入shell而不是python3 manage.py shell < utility_folder/load_users.py

© www.soinside.com 2019 - 2024. All rights reserved.