Python 如何将这个常规html表单更改为django表单?
我想更改以下HTML表单:Python 如何将这个常规html表单更改为django表单?,python,django,forms,Python,Django,Forms,我想更改以下HTML表单: @transaction.atomic def Register(request): if request.method == "POST": fname = request.POST['first_name'] lname = request.POST['last_name'] mobile = request.POST['mobile'] """This section replaces m
@transaction.atomic
def Register(request):
if request.method == "POST":
fname = request.POST['first_name']
lname = request.POST['last_name']
mobile = request.POST['mobile']
"""This section replaces multiple characters with blank value
so that the mobile number has nothing except numeric values
"""
rep = ['+', '-', ' ', '.']
for i in rep:
mobile = mobile.replace(i, '')
company = request.POST['company']
email = request.POST['email']
u = User.objects.create_user(mobile, email, '1234', first_name=fname, last_name=lname)
u.save()
p = UserProfile.objects.create(user=u, company=company, mobile=mobile)
p.save()
return HttpResponse("Registration complete! Please head over to the <a href='/login/'>login page</a> to start using your SMS panel.")
return render(request, "message/register.html", {})
register.html
<form method="post" action="">
{% csrf_token %}
{{ form }}
<input type="submit" value="Register"/>
</form>
{%csrf_令牌%}
{{form}}
在if form.is\u valid()==True之后
django创建一个已清理的数据方法,您可以使用该方法在视图中调用已清理的表单数据
您可能需要以下内容:
def Register(request):
if request.method == "POST":
form = RegisterForm(request.POST)
if form.is_valid():
fname = form.cleaned_data.get('first_name')
lname = form.cleaned_data.get('last_name')
另外,您的表单对象在forms.py中是什么样子的?您可以创建一个表单
RegisterForm
,并将移动设备的清理过程添加到clean\u mobile
函数中forms.py
。然后在views.py
中,可以使用form.data
字典访问所有表单数据
您可以执行以下操作:
forms.py
@transaction.atomic
def Register(request):
if request.method == "POST":
form = RegisterForm(request.POST)
if form.is_valid():
# I guess this is where I need help. Thanks.
else:
form = RegisterForm()
return render(request, "message/register.html", {'form': form})
from django import forms
class RegisterForm(forms.Form):
first_name = forms.CharField(max_length=100)
last_name = forms.CharField(max_length=100)
mobile = forms.CharField()
company = forms.CharField(max_length=100)
email = forms.EmailField()
def clean_mobile(self):
mobile = self.cleaned_data['mobile']
rep = ['+', '-', ' ', '.']
for i in rep:
mobile = mobile.replace(i, '')
return mobile
@transaction.atomic
def Register(request):
if request.method == "POST":
form = RegisterForm(request.POST)
if form.is_valid():
u = User.objects.create_user(form.cleaned_data['mobile'], form.cleaned_data['email'], '1234', first_name=form.cleaned_data['first_name'], last_name=form.cleaned_data['last_name'])
u.save()
p = UserProfile.objects.create(user=u, company=form.cleaned_data['company'], mobile=form.cleaned_data['mobile'])
p.save()
return HttpResponse("Registration complete! Please head over to the <a href='/login/'>login page</a> to start using your SMS panel.")
else:
form = RegisterForm()
return render(request, "message/register.html", {'form': form})
视图.py
@transaction.atomic
def Register(request):
if request.method == "POST":
form = RegisterForm(request.POST)
if form.is_valid():
# I guess this is where I need help. Thanks.
else:
form = RegisterForm()
return render(request, "message/register.html", {'form': form})
from django import forms
class RegisterForm(forms.Form):
first_name = forms.CharField(max_length=100)
last_name = forms.CharField(max_length=100)
mobile = forms.CharField()
company = forms.CharField(max_length=100)
email = forms.EmailField()
def clean_mobile(self):
mobile = self.cleaned_data['mobile']
rep = ['+', '-', ' ', '.']
for i in rep:
mobile = mobile.replace(i, '')
return mobile
@transaction.atomic
def Register(request):
if request.method == "POST":
form = RegisterForm(request.POST)
if form.is_valid():
u = User.objects.create_user(form.cleaned_data['mobile'], form.cleaned_data['email'], '1234', first_name=form.cleaned_data['first_name'], last_name=form.cleaned_data['last_name'])
u.save()
p = UserProfile.objects.create(user=u, company=form.cleaned_data['company'], mobile=form.cleaned_data['mobile'])
p.save()
return HttpResponse("Registration complete! Please head over to the <a href='/login/'>login page</a> to start using your SMS panel.")
else:
form = RegisterForm()
return render(request, "message/register.html", {'form': form})
@transaction.atomic
def寄存器(请求):
如果request.method==“POST”:
form=RegisterForm(request.POST)
如果form.is_有效():
u=User.objects.create_User(form.cleaned_data['mobile']、form.cleaned_data['email']、'1234',first_name=form.cleaned_data['first_name']、last_name=form.cleaned_data['last_name'])
u、 保存()
p=UserProfile.objects.create(user=u,company=form.cleaned_数据['company'],mobile=form.cleaned_数据['mobile'])
p、 保存()
返回HttpResponse(“注册完成!请前往开始使用您的SMS面板。”)
其他:
form=RegisterForm()
返回呈现(请求,“message/register.html”,{'form':form})
谢谢。一旦我成功了,我会选择这个作为答案。干杯。谢谢你详尽的回答。它工作得很好。我想知道我是否想在某个字段之后提供一个小注释,例如,在移动字段之后,我想说,请包含国家/地区代码。我如何才能做到这一点?您可以使用{form.mobile}
在移动
字段之间添加所需的html。类似于:请包括国家代码{{form.mobile}}