Python 脚本不适用于 django shell
Python script not working with django shell
我已经使用 csv 文件将脚本写入 create users
。我还必须使用 api 请求检查 sso username
是否有效,并将其写入 _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
请指教
使用 exec(open("utility_folder/load_users.py").read())
代替 python3 manage.py shell < utility_folder/load_users.py
。
我已经使用 csv 文件将脚本写入 create users
。我还必须使用 api 请求检查 sso username
是否有效,并将其写入 _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
请指教
使用 exec(open("utility_folder/load_users.py").read())
代替 python3 manage.py shell < utility_folder/load_users.py
。