如何在django中使用模板中的表单字段

时间:2017-07-10 22:39:02

标签: python django

我需要你的帮助,我正在尝试在django中实现注册功能,但我不知道如何将模板表单连接到我的视图。

我正在使用以下视图:

def signup(request):
if request.method == 'POST':
    form = SignupForm(request.POST)
    if form.is_valid():
        user = form.save(commit=False)
        user.is_active = False
        user.save()
        current_site = get_current_site(request)
        subject = 'Activate your blog account.'
        message = render_to_string('acc_active_email.html', {
            'user':user, 'domain':current_site.domain,
            'uid': urlsafe_base64_encode(force_bytes(user.pk)),
            'token': account_activation_token.make_token(user),
        })
        # user.email_user(subject, message)
        toemail = form.cleaned_data.get('email')
        email = EmailMessage(subject, message, to=[toemail])
        email.send()
        return HttpResponse('Please confirm your email address to complete the registration')
else:
    form = SignupForm()
return render(request, 'signup.html', {'form': form})

这是我做过的模板的一部分:

<div class="centre">
  <h1>Register For An Account To Access Ultra Marker API</h1>
  <form class="form" method="post">
  {% csrf_token %}
     <input type="text" class="name" placeholder="First Name", value={{  }} >
     <input type="text" class="name" placeholder="Last Name", value={{  }} >
     <input type="email" class="email" placeholder="Email", value={{  }} >
     <input type="text" class="name" placeholder="Username", value={{  }} >
     <input type="password"required autocomplete="off" placeholder="Password", value={{  }} />
     <input type="password"required autocomplete="off" placeholder="Confirm Password" value={{  }} />
     <input type="submit" class="submit" value="Register">
     <br/>
     <br/>
     <div style="text-align: right;padding-right: 10px">
     <a href="login/">Already registred ? Log in !</a>
  </div>
</form>

我的forms.py:

class SignupForm(UserCreationForm):
email = forms.EmailField(max_length=254, help_text='Required. Inform a valid email address.')

class Meta:
    model = User
    fields = ('first_name', 'last_name', 'username', 'email', 'password1', 'password2', )

1 个答案:

答案 0 :(得分:2)

好的,首先,这里始终检查if form.is_valid():在某些时候是否为真。最简单的检查方法是print test,并在点击表单的提交按钮时检查控制台。

在您在最后一行return render(request, 'signup.html', {'form': form})设置的views.py文件中,您将关键字form传递给模板,您可以在那里使用它。

<form method="POST" enctype='multipart/form-data' >
{% csrf_token %}
{{form}}
<button type="submit" class="btn ban-default fa fa-cloud-upload">
</form>
在模板中

,您可以使用form这样的关键字。现在你的表单应该显示,然后可以在表单验证中呈现。

  

修改

因为它更多关于如何设置表单样式: 在我的模板中,我使用Widget Tweaks

<form method='POST' action="/" enctype='multipart/form-data'>
 {% load widget_tweaks %}
 {% csrf_token %}
 {{ form.first_name |add_class:"customCSS1 customCSS2" }}
 {{ form.second_name |add_class:"customCSS3 customCSS4" }}
</form>
{{ form.media.js }}

使用此插件,您可以根据需要设置表单样式。所有Css课程都有效