【问题标题】:Python script not working with django shellPython脚本不适用于django shell
【发布时间】:2019-08-09 15:40:59
【问题描述】:

我已使用 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 &lt; 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】:

    在 shell 中使用exec(open("utility_folder/load_users.py").read()) 而不是python3 manage.py shell &lt; utility_folder/load_users.py

    【讨论】:

    • 如果您要多次执行此操作,请考虑创建 Django 管理命令。
    • 这行得通,你知道为什么传统方式行不通吗?
    猜你喜欢
    • 1970-01-01
    • 2013-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-05
    • 2015-11-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多