十三、Django之添加用户(原始方法实现)

修改urls.py

复制代码
    path("user/add/", views.user_add),

添加user_add.html

复制代码
{% extends 'layout.html' %}
{% block content %}
    <div class="container">
        <div class="panel panel-default">
            <div class="panel-heading">
                <h3 class="panel-title">新建用户</h3>
            </div>
            <div class="panel-body">
                <form method="post">
                    {% csrf_token %}
                    <div class="form-group">
                        <label>姓名</label>
                        <input type="text" class="form-control" placeholder="姓名" name="name"/>
                    </div>
                    <div class="form-group">
                        <label>密码</label>
                        <input type="text" class="form-control" placeholder="密码" name="pwd"/>
                    </div>
                    <div class="form-group">
                        <label>年龄</label>
                        <input type="text" class="form-control" placeholder="年龄" name="age"/>
                    </div>
                    <div class="form-group">
                        <label>余额</label>
                        <input type="text" class="form-control" placeholder="余额" name="money"/>
                    </div>
                    <div class="form-group">
                        <label>入职时间</label>
                        <input type="text" class="form-control" placeholder="入职时间" name="time"/>
                    </div>
                    <div class="form-group">
                        <label>性别</label>
{#                        可以这么写,但是如果下拉选项过多的时候很费劲#}
{#                        <select class="form-control">#}
{#                            <option value="1">男</option>#}
{#                            <option value="2">女</option>#}
{#                        </select>#}
                        <select class="form-control" name="gender">
                            {% for item in gender_choices %}
                            <option value="{{ item.0 }}">{{ item.1 }}</option>
                            {% endfor %}
                        </select>
                    </div>
                    <div class="form-group">
                        <label>部门</label>
                        <select class="form-control" name="dept">
                            {% for item in depart_list %}
                                <option value="{{ item.id }}">{{ item.title }}</option>
                            {% endfor %}
                        </select>
                    </div>

                    <button type="submit" class="btn btn-primary">提 交</button>
                </form>
            </div>
        </div>
    </div>
{% endblock %}

修改view.py

复制代码
def user_add(request):
    if request.method=="GET":
        context = {
            "gender_choices": models.UserInfo.gender_choices,
            "depart_list": models.Department.objects.all()
        }
        return render(request, "user_add.html", context)

    # 获取用户提交的数据
    name = request.POST.get("name")
    pwd = request.POST.get("pwd")
    age = request.POST.get("age")
    money = request.POST.get("money")
    time = request.POST.get("time")
    gender = request.POST.get("gender")
    dept = request.POST.get("dept")

#     添加数据到数据库中
    models.UserInfo.objects.create(name=name, password=pwd, age=age, account=money, 
                                   create_time=time, gender=gender, depart_id=dept)
    return redirect("/user/list/")

修改user_list.html

注意将user_list的路由替换

复制代码
            <a class="btn btn-success" href="/user/add">
                <span class="glyphicon glyphicon-plus-sign" aria-hidden="true"></span>
                新建用户
            </a>

页面测试

缺点

  • 用户提交数据没有校验
  • 用户输错信息页面上没有错误提示
  • html文件中每个字段都需要重写
  • 关联的数据是手动获取并循环展示在页面
相关推荐
冼紫菜5 分钟前
[特殊字符]CentOS 7.6 安装 JDK 11(适配国内服务器环境)
java·linux·服务器·后端·centos
koiy.cc5 分钟前
记录:echarts实现tooltip的某个数据常显和恢复
前端·echarts
胡耀超11 分钟前
18.自动化生成知识图谱的多维度质量评估方法论
人工智能·python·自动化·知识图谱·数据科学·逻辑学·质量评估
一只专注api接口开发的技术猿14 分钟前
企业级电商数据对接:1688 商品详情 API 接口开发与优化实践
大数据·前端·爬虫
GISer_Jing16 分钟前
[前端高频]数组转树、数组扁平化、深拷贝、JSON.stringify&JSON.parse等手撕
前端·javascript·json
三块钱079427 分钟前
【原创】基于视觉大模型gemma-3-4b实现短视频自动识别内容并生成解说文案
开发语言·python·音视频
神码小Z33 分钟前
Ubuntu快速安装Python3.11及多版本管理
python
JOYUAGV1 小时前
Word压缩解决方案
python·word
Yvonne爱编码1 小时前
CSS- 4.1 浮动(Float)
前端·css·html·github·html5·hbuilder
mahuifa1 小时前
(9)python开发经验
python·开发经验