通过Django/Python中的自定义表单更新用户数据

2024-06-26 14:36:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在使用python3.4.3和django1.8.4,我需要从用户那里更新一些值,这是我的代码。当我尝试保存时,用户不会保存新的权限状态。你知道吗

def permissions(request):
if request.method == 'POST':
    try:
        username = request.POST.get('usuario')
        permiso = request.POST.get('permiso')

        print("usuario seleccionado", username)
        print("permisos seleccionados", permiso)

        if permiso == 'Administrador':
            permiso = 'ad'
            print("seleccion permisos de Administrador")
        if permiso == 'Planificador':
            permiso = 'pl'
            print("seleccion permisos de Planificador")
        if permiso == 'Básico':
            permiso = 'bs'
            print("seleccion permisos de Básico")

        usp = UserProfile(user = username, role = permiso) 
        print("Usuario modificado",usp)
        usp.save()

        return HttpResponse(
        json.dumps({'redirect': "/SQM/administrar_usuarios/"}),
        content_type="application/json"
                    )         
    except:
        return HttpResponse(
                    json.dumps({'redirect': "error!"}),
                    content_type="application/json"
                                )

我用javascript通过post发送数据。 这是我的模型。你知道吗

class UserProfile(models.Model):
user = models.OneToOneField(User)
role = models.CharField(max_length=2, choices=TIPOS_USUARIO)
class Meta:
    verbose_name='Perfil de usuario'
    verbose_name_plural = 'Perfiles de usuario'
def  __str__(self):
    return self.user.username

这是我在html文件中的视图。你知道吗

<div class="col-md-4">
                <label>Seleccionar Usuario</label>
                <select class="form-control usuarios" id="uid" >
                    {% for usuarios in users%}
                    <option data-userdata-id="{{ usuarios.id }}">{{usuarios.user}}</option>
                    {%endfor%}
                </select>
        </div>
        <div class="col-md-4">
            <div class="form-group">
                <label>Seleccionar Permisos</label>
                <select class="form-control permisos" id="pid">
                    {% for roles in permisos%}
                    <option data-permisos-id="{{ roles }}">{{roles}}</option>
                    {%endfor%}
                </select>                   
            </div>
        </div>

我正在尝试从1个用户更新角色状态。你知道吗

我的自定义权限装饰器。你知道吗

def permission_required(permission_array):
def decorator(view_function):
    def wrapper(request, *args, **kwargs):
        if(request.user.userprofile.role in permission_array):
            return view_function(request, *args, **kwargs)
        else:
            return HttpResponse("<h2>No cumple permisos</h2>")
    return wrapper
return decorator

谢谢你的智慧。你知道吗


Tags: dividreturnifrequestdefusernamede
1条回答
网友
1楼 · 发布于 2024-06-26 14:36:31

当我尝试重命名用户权限时,我也尝试重新保存同一个用户,这是不允许的,因为我的模型是一对一字段。你知道吗

我换这条线。你知道吗

usp = UserProfile(user = username, role = permiso)

和这个一样。你知道吗

        user = User.objects.get(username=username)            
        usp = UserProfile.objects.get(user = user)            
        usp.role = permiso
        usp.save()

非常感谢你的评论。你知道吗

相关问题 更多 >