我有这个html表单:
<form method="post" action="">
{% csrf_token %}
<div class="inputText">
<input type="text" name="username" placeholder="Username" value = required />
<br><br>
<input type="email" name="email" placeholder="Email" required />
<br><br>
<input type="password" name="pass1" id="pass1" placeholder="Password" required />
<br><br>
<input type="password" name="pass2" id="pass2" onkeyup="checkPass(); return false;" placeholder="Confirm Password" required />
<br><br>
<span id="confirmMessage" class="confirmMessage"></span>
</div>
<div class="send">
<input type="submit" name="register" value="Register" class="register" />
</div>
这是我的forms.py:
class UserForm(forms.ModelForm):
class Meta:
model = User
fields = ('username', 'email', 'password')
我的观点是
def register(request):
if request.method == "POST":
form = UserForm(request.POST)
if form.is_valid():
form.save
new_user = authenticate(username=request.POST['username'], password =request.POST['password'])
login(request.new_user)
return HttpResponseRedirect(request, '/index')
else:
form = UserForm()
return render(request, 'authen/register.html', {'form': form})
这应该是一个寄存器系统,但是当我按register时,它会重新加载寄存器页,但什么也不会发生。当我转到django admin时,我没有看到新用户,所以django没有从表单域接受输入。
发布于 2015-11-16 22:58:23
该表单可能无效,但您没有在模板中显示任何错误。至少在某个地方执行{{ form.errors }}
,尽管实际上您应该直接从Django表单中输出所有字段及其错误:
{{ form.username }}
{{ form.username.errors }}
等。
还要注意,实际上并没有在is_valid块中调用save方法。您需要做的是:
form.save()
发布于 2018-07-06 08:06:10
一定要通过输入元素的name
属性来输入get
。这是因为request.POST['keyword']
引用由指定的html name
属性keyword
标识的元素。
下面是一个例子:
<form action="/login/" method="POST"> <input type="text" name="keyword" placeholder="Search query"> <input type="number" name="results" placeholder="Number of results"> </form>
在Python文件中,获取输入元素的值,request.POST['keyword']
和request.POST['results']
将分别包含keyword
和results
的值。
https://stackoverflow.com/questions/33738273
复制相似问题