我有一个在 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())
错误是 - 无法将“User”对象隐式转换为 str
错误是由于这个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) 中遇到错误
其中表示序列项 0:预期的 str 实例,用户找到
如何解决? 我正在使用 django 2.0
最佳答案
您正在尝试连接两个对象,但至少其中一个不是 str 类型,为此,您应该实现 User 类的 __str__ 方法,在该方法中返回以下值:代表您的类,以便您可以按照您想要的方式连接它 dirname + str(username)
它调用 username.__str__
方法
关于python - 类型错误 - 无法将 'User' 对象隐式转换为 str,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51087391/