我需要你的帮助,我正在尝试在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', )
答案 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课程都有效