2011-10-18 45 views
1

我想通过html/django做一个注册表单,所以我有3个输入框让用户放入电子邮件,用户名和密码,然后通过POST将它们发送到/ adduser通过与Django的帖子传递值

<form action="/OmniCloud_App/adduser" method="post"> 
{% csrf_token %} 
    Email Address: <input type="text" name="email" /></br> 
    Username: <input type="text" name="username" maxlength=25 /></br> 
    Password: <input type="password" maxlength=30 /></br> 
    </br> 
    <input type="submit" value="Send" /> <input type="reset"> 
</form> 

adducer创建一个新用户,并将其保存到数据库:

def adduser(request, email, username, password): 
    u = User(email=email, username=username, password=password) 
    u.save() 
    return render_to_response('adduser.html', {'email':email, 'username':username, 'password':password}) 

但是当我点击提交/注册,它抱怨说,我只是给它1个参数时,3人的预期。我应该如何将来自signup.html的电子邮件,用户名和密码字段传递给用户名功能(位于/用户名)?

回答

2

如果你读part 3 of the tutorial,你会看到该视图函数需要URL本身作为参数的部分。如果您阅读part 4 of the same tutorial,则会看到POST参数通过request.POST进入。进一步在文档中,您将了解到您可以编写处理HTML表单生成和验证的Form类。

+0

好吧,所以我用它,但现在它说,密码不是POST请求的一部分,但它似乎有电子邮件,用户名和一些叫做csrfmiddlewaretoken的东西。为什么它不会发送表单的密码字段? – Chris

+0

因为你忘了给它一个名字。这是使用Django表单的另一个原因。 –

+0

你太好了。我会研究表单类,只是想通过该死的教程第一哈哈。谢谢一堆! – Chris

1

,他们将在request.POST,您可以查询像你这样一个dict

email = request.POST.get('email') 
username = request.POST.get('username') 
password = request.POST.get('password') 
+0

您正在寻找的词是[“映射”](http://docs.python.org/library/stdtypes.html#mapping-types-dict)。 –