ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python3项目初始化2-->用户删除和编辑

2022-07-25 10:04:00  阅读:158  来源: 互联网

标签:初始化 uid get -- request name user Python3 users


Python3项目初始化2-->用户删除和编辑

8、用户删除
当前用户是:{{ request.session.user.name }}
index.html里面新增如下内容,
当前登录用户是:{{ request.session.user.name }}, <a href="/user/logout/">退出
这里需要model.py里面返回,故model.py里面做调整。
def valid_login(name, password):
    users = get_users()
   for uid, user in users.items():
        if user['name'] == name and user['password'] == password:
            user['id'] = uid
            return user # 将True 修改为返回值user
    return None
首页设置位置,编辑和删除(这里的判断是说不能删除用户自己,uid参数)页面。
<th>联系方式</th>
<th>操作</th
{% for uid, user in users.items %}
<td>{{ user.tel }}</td>
<td>
<a href="{% url 'user:view' %}?uid={{ uid }}">编辑</a>
{% if request.session.user.id != uid %}
<a href="{% url 'user:delete' %}?uid={{ uid }}">删除</a>
{% endif %}
</td>
添加url信息,
path('delete/', views.delete, name='delete'),
path('view/', views.view, name='view'),
配置视图信息,
from .models import valid_login as valid_login_func, delete_user, get_user
def delete(request):
    if not request.session.get('user'):
        return redirect('user:login')
    uid = request.GET.get('uid', '')
    if uid.isdigit():
        delete_user(uid)
    return redirect('user:index')
配置model
def dump_users(users):
    fhandler = open(DATA_FILE, 'wt')
    fhandler.write(json.dumps(users))
    fhandler.close()
    return True
def delete_user(uid):
    users = get_users()
    users.pop(uid, None)
    dump_users(users)
    return True
此时再次登录访问,删除不了自己,可以删除其他用户。

9、编辑用户
首页index.html,添加配置:<a href="{% url 'user:view' %}?uid={{ uid }}">编辑</a>
用户编辑页面view.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>用户编辑</title>
</head>
<body>
<form action="{% url 'user:update' %}" method="POST">
{% csrf_token %}
{% if errors %}
{% for key, error in errors.items %}
{{ error }} <br/>
{% endfor %}
{% endif %}
<input type="hidden" name="id" value="{{ user.id }}">
用户名: <input type="text" name="name" value="{{ user.name }}"/> <br/>
联系方式: <input type="text" name="tel" value="{{ user.tel }}"/> <br/>
年龄: <input type="text" name="age" value="{{ user.age }}"/> <br/>
性别: <input type="radio" name="sex" value="1"
{% if user.sex != 0 %} checked="checked" {% endif %}/> 男
<input type="radio" name="sex" value="0"
{% if user.sex == 0 %} checked="checked"{% endif %} /> 女
<br/>
<input type="submit" value="修改" /> <br/>
</form>
</body>
</html>
路由url设置,
path('view/', views.view, name='view'),
path('update/', views.update, name='update'),
视图信息,
from .models import valid_login as valid_login_func, delete_user, get_user, valid_update_user, update_user
def view(request):
    if not request.session.get('user'):
        return redirect('user:login')
    uid = request.GET.get('uid', '')
    return render(request, 'user/view.html', {'user': get_user(uid)})

def update(request):
    if not request.session.get('user'):
        return redirect('user:login')
    uid = request.POST.get('uid', '')
    name = request.POST.get('name', '')
    tel = request.POST.get('tel', '')
    age = request.POST.get('age', '')
    sex = request.POST.get('sex', 1)

    is_valid, user, errors = valid_update_user(request.POST)
    if is_valid:
        update_user(user)
        return redirect('user:index')
    else:
        return render(request, 'user/view.html',
                           {'user': user, 'errors': errors})
模型model设置,需要调整get_user,获取用户uid信息
def get_user(uid):
    users = get_users()
    user = users.get(uid, {}) #加入uid,为后面删除做铺垫。
    user['id'] = uid
    return user
def valid_update_user(params):
    uid = params.get('id', '')
    name = params.get('name', '')
    tel = params.get('tel', '')
    age = params.get('age', '')
    sex = params.get('sex', '')
    is_valid = True
    user = {}
    errors = {}
    users = get_users()
    user['id'] = params.get('id', '').strip()
    if users.get(user['id']) is None:
        errors['id'] = '用户信息不存在'

    user['name'] = params.get('name', '').strip()
    for uid , cuser in users.items():
        if cuser['name'] == user['name'] and uid != user['id']:
            errors['name'] = '用户名已存在'
            is_valid = False
            break

    user['age'] = params.get('age', '0').strip()
    if not user['age'].isdigit():
        errors['age'] = '年龄格式错误'
        is_valid = False
        user['tel'] = params.get('tel', '0').strip()
        user['sex'] = int(params.get('sex', '0').strip())

        return is_valid, user, errors

def update_user(params):
    uid = params.pop('id')
    users = get_users()
    users[uid].update(params)
    return dump_users(users)

页面访问可以正常编辑和保存了。

标签:初始化,uid,get,--,request,name,user,Python3,users
来源: https://www.cnblogs.com/sunnyyangwang/p/16516400.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有