Python 如何将这个常规html表单更改为django表单?

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

我想更改以下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 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}}