Python PasswordGenerator как я могу его закодировать
Я пытаюсь сделать генератор паролей, в котором можно выбрать длину и то, какие цифры, символы или специальные символы должны быть внутри. Я затрудняюсь с кодом, потому что не знаю, как я могу позволить программе выбирать 1 символ из каждого списка для каждого цикла длины
Это мой код сейчас
alphabets = list(string.ascii_letters)
digits = list(string.digits)
special_characters = list("!@#$%^&*()")
a_d = list(alphabets, digits)
a_s = list(alphabets, special_characters)
d_s = list(digits, special_characters)
characters = list(string.ascii_letters + string.digits + "!@#$%^&*()")
random.shuffle(characters)
length = int(request.GET.get('length'))
alphabets_b = bool(request.GET.get('alphabets'))
digits_b = bool(request.GET.get('digits'))
special_characters_b = bool(request.GET.get('special_characters'))
password = []
for i in range(length):
if alphabets_b == True:
if digits_b == True:
password.append(random.choice(a_d))
elif special_characters_b == True:
password.append(random.choice(a_s))
elif digits_b == True:
if special_characters_b == True:
password.append(random.choice(d_s))
elif special_characters_b == True:
if digits_b == True:
password.append(random.choice(d_s))
Я знаю, что это очень плохое кодирование, как я могу улучшить код, чтобы он работал. С этим кодом программа говорит, что я не могу поместить 3 других списка в 1 список, что имеет смысл, но я не могу придумать лучший способ разделения символов.
В моем шаблоне есть такой код:
<form method="get" action="{% url 'home:passwordgenerator' %}">
<div class="fake_input">
<p class="fake_input_text">{{ password }}</p>
</div>
<span class="fake_input_l">Length:</span> <select class="fake_input_drop" name="length">
<option value="8">8</option>
<option value="10">10</option>
<option value="12">12</option>
<option value="14">14</option>
<option value="16">16</option>
<option value="18">18</option>
<option value="20">20</option>
</select>
<span class="fake_input_l"> Alphabet Letters: <input type="checkbox" name="alphabets" checked>
Digits: <input type="checkbox" name="digits" checked>
Special Characters: <input type="checkbox" name="special_characters" checked></span>
<button type="submit" value="Generate Password" class="fake_input_button">Generate</button>
</form>
Как вы видите, я пытаюсь сделать это с помощью флажков. Спасибо за помощь!