I want to create a site which requires Monkeys to login. Login is done via a form. When a Monkey first creates an account she enters her "monkey_name" and "password" and clicks "submit" Now a script is called which creates a file with Id "monkey_name" containing "password". This bit works fine, no problem. The problem is when the Monkey comes back to log into to their account. They must type in their monkey_name and password. Now, to check if the password is right, I have to open the file named "monkey_name" and check if its content is the same as the password which the monkey typed. This is the script I wrote: ('monkey_name' and 'password' are variables which come from a form) existing_monkeys=container.objectIds('File') no_monkeys=len(existing_monkeys) i=0 for i in range(no_monkeys): if (monkey_name == existing_monkeys[i]): if (container.monkey_name == password): return "Your password is correct." else: return "Your password is incorrect." else: return "there is no monkey by that name." The problem is: 'container.monkey_name' If the script is run with monkey_name = Heidi. What we want is the file: container.Heidi But what Zope looks for is: container.monkey_name, which of course doesn't exist. I checked this by creating a file named Heidi and then a script named cat_file, which contains a single line: return container.Heidi This returned the contents of the file Heidi without any complaints. I then changed cat_file so that it took a parameter file_name return container.file_name If I then call this file cat_file(Heidi) it doesn't work :-( What should I do?