You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django如何将模板下拉菜单的值传递到视图以自定义密码长度

实现方法

1. 修改views.py视图函数

你需要先调整视图逻辑,支持从请求参数中获取前端传递的长度值,同时增加合法性校验避免运行异常,修改后代码如下:

import string
import random
from django.shortcuts import render

def view_passwordgenerator(request):
    characters = list(string.ascii_letters + string.digits + "!@#$%^&*()")
    random.shuffle(characters)
    # 从GET请求中获取长度参数,默认值设为10
    length = request.GET.get('length', 10)
    # 校验参数合法性,避免非数字或者超出合理范围
    try:
        length = int(length)
        # 限制密码长度范围,可根据需求自行调整
        if length < 6 or length > 32:
            length = 10
    except (ValueError, TypeError):
        length = 10
    password = []
    for i in range(length):
        password.append(random.choice(characters))
    random.shuffle(password)
    pw = "".join(password)
    context = {'password': pw, 'length': length}
    return render(request, 'home/passwordgenerator.html', context)

2. 修改模板文件,增加下拉选择表单

在你的passwordgenerator.html中加入提交表单,下拉菜单的name属性要和视图中取的参数名保持一致(这里是length),示例代码如下:

<!-- 密码展示区域 -->
<div>生成的密码:{{ password }}</div>
<!-- 选择长度的表单,用GET方式提交到当前视图 -->
<form method="get" action="">
    <label for="length">选择密码长度:</label>
    <select name="length" id="length">
        <option value="6" {% if length == 6 %}selected{% endif %}>6位</option>
        <option value="8" {% if length == 8 %}selected{% endif %}>8位</option>
        <option value="10" {% if length == 10 %}selected{% endif %}>10位</option>
        <option value="16" {% if length == 16 %}selected{% endif %}>16位</option>
        <option value="32" {% if length == 32 %}selected{% endif %}>32位</option>
    </select>
    <button type="submit">生成密码</button>
</form>

逻辑说明

  • 表单默认提交到当前视图,不需要额外配置路由
  • 模板中的selected判断会让下拉菜单默认显示上次选中的长度,使用体验更好
  • 视图中的参数校验可以避免用户手动输入非法参数导致的程序报错

内容的提问来源于stack exchange,提问作者FLYAX

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 13:39:01