Python-скрипт не работает с оболочкой django - PullRequest
0 голосов
/ 19 марта 2019

Я написал скрипт для create users, используя CSV-файл. Я должен проверить, 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

Пожалуйста, совет.

1 Ответ

2 голосов
/ 19 марта 2019

Используйте exec(open("utility_folder/load_users.py").read()) в оболочке вместо python3 manage.py shell < utility_folder/load_users.py.

...