Django网站用户注册--增加注册内容(增加手机号或其他信息)

针对上一篇比较简单的注册内容,只要求用户输入用户名和密码,根据现在的网站需求,我们常常需要用户填写手机号或收货地址之类的信息。这里以注册页面加入手机号为例,有些代码如果觉得不好理解可以先看一下上一篇文章。这篇文章的代码都是在上一篇基础上完善的

1 models.py中创建新的类

from django.contrib.auth.models import User
from django.db import models

class UserProfile(models.Model):
    user = models.OneToOneField(User,unique=True,on_delete=models.CASCADE)
    phone = models.CharField(max_length=20,null=True)
    address = models.CharField(max_length=100,null=True)
    def __str__(self):
        return self.phone
    class Meta:
        verbose_name_plural=verbose_name='用户信息'

2 admin.py中注册

from django.contrib import admin
from .models import UserProfile

@admin.register(UserProfile)
class UserProfileAdmin(admin.ModelAdmin):
    list_display = ('user','phone',)
    fields = ('user','phone',)

3 创建表单类

class UserProfileForm(forms.ModelForm):
    class Meta:
        model = UserProfile
        fields = ('phone',)

4 完成视图类

def register(request):
    if request.method == "POST":
        user_form = RegistrationForm(request.POST)
        userprofile_form = UserProfileForm(request.POST)
        if user_form.is_valid()*userprofile_form.is_valid():
            new_user = user_form.save(commit=False)
            new_user.set_password(user_form.cleaned_data['password'])
            new_user.save()
            new_profile = userprofile_form.save(commit=False)
            new_profile.user = new_user
            new_profile.save()
            return HttpResponse('注册成功')
        else:
            return HttpResponse('注册失败')
    else:
        user_form = RegistrationForm()
        userprofile_form = UserProfileForm()
        return render(request,'account/register.html',{'form':user_form,'profile':userprofile_form})

5 完善模板

<div class="row text-center">
    <h1>注册</h1>
    <form class="form-horizontal" action="{% url 'user_register' %}" method="post">
        {% csrf_token %}
        <div class="form-group">
            <label for="{{ form.username.id_for_label }}" class="col-md-5 control-label">用户名:</label>
            <div class="col-md-6 text-left">{{ form.username }}</div>
        </div>
        <div class="form-group">
            <label for="{{ form.email.id_for_label }}" class="col-md-5 control-label">Email:</label>
            <div class="col-md-6 text-left">{{ form.email }}</div>
        </div>
        <div class="form-group">
            <label for="{{ form.password.id_for_label }}" class="col-md-5 control-label">密码:</label>
            <div class="col-md-6 text-left">{{ form.password }}</div>
        </div>
        <div class="form-group">
            <label for="{{ form.password2.id_for_label }}" class="col-md-5 control-label">密码:</label>
            <div class="col-md-6 text-left">{{ form.password2 }}</div>
        </div>
        <div class="form-group">
            <label for="{{ profile.phone.id_for_label }}" class="col-md-5 control-label">手机:</label>
            <div class="col-md-6 text-left">{{ profile.phone }}</div>
        </div>
        <input type="submit" class="btn btn-primary btn-sm" value="提交">
    </form>
</div>

完成以上步骤就可以增加手机字段的注册了,还需要增加其他字段的注册要求只要多编写其他字段就可以了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值