python - Django/Python:向大量用户名添加递增数字
问题描述
我正在创建一个有玩家列表的游戏,并且在创建游戏时会生成玩家(用户)列表。下面的函数使用随机用户名创建一个播放器,例如“Player_0tt”。
我希望不使用随机 ascii_lowercase + 数字,而是将每个用户增加 1。所以第一个用户称为 Player_1、Player_2..etc。我会将游戏 ID 添加到用户名中,以使每个游戏用户都独一无二,但现在我正试图在我的用户名后面添加 1、2、3...。
我应该创建一个递增的新函数,还是有更聪明的方法来做到这一点?
创建随机用户名
def generate_username(length=3, chars=ascii_lowercase + digits, split=7, delimiter='_'):
username = 'Player' + ''.join([choice(chars) for i in range(length)])
if split:
username = delimiter.join([username[start:start + split] for start in range(0, len(username), split)])
try:
User.objects.get(username=username)
return generate_random_username(length=length, chars=chars, split=split, delimiter=delimiter)
except User.DoesNotExist:
return username
解决方案
想办法。改变了我的方法。
我创建了一个计数器,而不是 generate_username 函数,它为每次生成的迭代(对于每个用户)进行计数。
它有点脱离上下文,但看起来如下:
对于创建的每个参与者,添加游戏 id 并从 1 开始计数
count = 0
for player_url in game_urls:
count = count + 1
user = User.objects.create_user(username='Player'+str(game.id)+'_'+str(count), password="123456", first_name=player_url, last_name=game.id)
user.save()
这将导致生成的用户如下所示
播放器155_1
播放器155_2
...ETC
我现在只使用 first_name 和 last_name 表行作为数据。最好重命名用户行或添加一个名为 Game_ID 和 Player_URL
推荐阅读
- c# - 模板页脚中的 C# 增量编号
- protocol-buffers - 任何客户端都可以从服务器生成 .proto 文件吗?
- r - 尝试使用 R 连接到 Elasticsearch 时出错
- bash - 查找 .txt 格式的所有文件,以 Dev 开头的文件除外
- typescript - TypeScript 装饰器命名约定
- javascript - 简单的动画播放/反转按钮
- python - 如何以给定的格式反转这本字典?
- windows - 使用 PowerShell 将图像复制到剪贴板时如何保留图像大小?
- wordpress - 将 WooCommerce 帐单地址和送货地址传递给 Paypal
- c++ - QDialog的默认按钮QPushButton如何释放焦点?