2017-08-23 70 views
0

我是新的Django,我有一个问题。Django错误消息

使用django表单并且不能在循环中获取错误消息。 他们只是没有出现。我不知道为什么会发生这种情况,但我改变了窗体的生成。总之看看代码

<span id="username" class="input input--madoka">{{ form.username }} {{ form.username.label_tag }}</span> 
<span id="first_name" class="input input--madoka">{{ form.first_name }} {{ form.first_name.label_tag }}</span> 
<span id="last_name" class="input input--madoka">{{ form.last_name }} {{ form.last_name.label_tag }}</span> 
<span id="email" class="input input--madoka">{{ form.email }} {{ form.email.label_tag }}</span> 
<span id="password" class="input input--madoka">{{ form.password1 }} {{ form.password1.label_tag }}</span> 
<span id="password2" class="input input--madoka">{{ form.password2 }} {{ form.password2.label_tag }}</span> 

{% for error in form.errors %} 
    <h2 style="color: red; font-size: 50px">{{ error }}</h2> 
{% endfor %} 

查看:

def signup(request): 
    if request.method == 'POST': 
     form = SignupForm(request.POST) 
     if form.is_valid(): 
      form.save() 
      username = form.cleaned_data.get('username') 
      raw_password = form.cleaned_data.get('password1') 
      user = authenticate(username=username, password=raw_password) 
      login(request, user) 
      messages.success(request, '<p class="success-m animated fadeInUp">You were successfully registered %s </p>'%user.first_name) 
      return redirect('/') 
    else: 
     form = SignupForm() 
    return render(request, 'signup.html', {'form': form}) 

只是错误信息不会出现。

在此先感谢。 (很抱歉,如果我给问题是错误的。)新手:(

+0

显示您的视图代码,请 –

+0

好吧,我会添加我的视图代码 –

+0

表单数据是他们保留的,你看到它在前面还是在发布后重置? –

回答

0

因为你有一个无效的形式没有其他条件,它应该是:

def signup(request): 
    template_name = 'signup.html' 

    if request.method == 'POST': 
     form = SignupForm(request.POST) 
     if form.is_valid(): 
      form.save() 
      ... 
     else: 
      # your invalid form after `request.POST` goes here. 
      # you should render the template again. 
      print(form.errors) 
      return render(request, template_name, {'form': form}) 
    else: 
     form = SignupForm() 
    return render(request, template_name, {'form': form})