Thanks, I think I understand now. The last snippet looks very clean as
opposed to defining the various auth actions in the controller.
Also, I think I figured out why the form isn't saving. It's because there
are errors on the form, but the errors are hidden. Right now I only display
three fields: username, email, and password. But because auth_user requires
first_name and last_name not be empty(Error: "
Cannot be empty")
, the submission actually fails since they are empty. And since there's no
html code for the extraneous fields, the error never shows.
>From your first post you suggest:
def user():
if request.args(0) == 'register':
for field in [list, of, fields]:
db.auth_user[field].readable = db.auth_user[field].writable =
False
return dict(form=auth())
But won't that set the db.auth_user[field] readable and writable to False
every time a user visits the register page?
Is there any difference doing it this way inside db.py (using the
'last_name' field) instead of in the controller:
db.auth_user['last_name'].readable = db.auth_user['last_name'].writable =
False
On Friday, September 6, 2013 8:55:13 PM UTC-4, Anthony wrote:
>
> On Friday, September 6, 2013 7:51:54 PM UTC-4, Apple Mason wrote:
>
>> Oops, I do have form.custom.begin and form.custom.end. I had forgotten to
>> type it here.
>>
>> I also wanted a custom view for the registration, login, and whatever
>> else, so my understanding is that I can do this by using
>> form=auth.register() and form=auth.login(). Then in their respective views,
>> I can format the html whatever way I want with form.custom.begin and
>> form.custom.end.
>>
>
> You can also create a single view and include logic like this:
>
> {{if request.args(0) == 'login':}}
> [code to show login form]
> {{elif request.args(0) == 'register':}}
> [code to show register form]
> {{else:}}
> {{=form # use defaults for other forms}}
> {{pass}}
>
> Is form=auth.register() supposed to handle inserting the new user to the
>> database? I've only dealt with handling it in the controller with 'if
>> form.process().accepted', so looking at 'return(form=auth.register()) is a
>> bit confusing.
>>
>
> Don't call form.process() with an Auth form -- the Auth method already
> calls .process(), and calling it twice will lead to errors. Yes,
> auth.register() does handle inserting the user into the database.
>
> Anthony
>
--
---
You received this message because you are subscribed to the Google Groups
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.