【发布时间】:2018-12-07 19:15:02
【问题描述】:
我有一个在 python 2.7 上运行良好的代码,但后来我迁移到 python 3.5 并且它不再工作了,我收到了一个错误。 代码如下:
def gen_cert(keyname, certname, password, username):
cmd = [
'openssl', 'pkcs12', '-name', username, '-inkey', tempdirname + keyname,
'-in', tempdirname + certname, '-export', '-out',
dirname + username + '.p12', '-password', 'pass:' + password
]
s = subprocess.Popen(cmd, shell=False)
out, err = s.communicate('\n'.encode())
错误是-Can't convert 'User' object to str implicitly
错误是由于这个dirname + username + '.p12'
这里是局部变量:
| Variable | Value |
______________________________
| certname |'w0ui8t9mkg.pem' |
| keyname |'7g89utc1it.pem' |
| password |'bo02qm99ui' |
| username |<User: abcuser>|
这是调用上述函数的函数:
def generate_user_certificate(self, request, queryset):
check_folders(request)
UsersList = []
for qs in queryset:
username = qs.username
keyname = random_name('.pem')
certname = random_name('.pem')
password = random_name('')
gen_cert(keyname, certname, password, username)
UsersList.append(username)
# Displaying success message for certificate generation
allusers = ', '.join(UsersList)
messages.success(
request,
"Certificates for users: " + allusers + " generated successfully.")
我在allusers = ', '.join(UsersList) 中也遇到了错误
上面写着sequence item 0: expected str instance, User found
如何解决? 我正在使用 django 2.0
【问题讨论】:
-
我猜用户名是一个用户对象?
-
显示
username的代码 -
是的,用户名是一个用户对象。
-
您能否包含调用
gen_cert()函数的代码?如果可能的话,可能还有User类的代码。 -
@RishabhChaudhary 我更新了我对 Django 2.0 的回答,尽管在您的代码中查看
gen_cert()被调用的位置仍然会有所帮助。它是 python,所以我知道这不是编译时错误;)
标签: python python-3.x typeerror