扩展django的user表

来源:互联网 发布:绿豆网络团队 编辑:程序博客网 时间:2024/04/24 05:19

扩张django的user表来增加user中的字段

定义模型

from django.db import modelsfrom django.conf import settingsclass Profile(models.Model):    #一对一的关系映射    user = models.OneToOneField(settings.AUTH_USER_MODEL)    date_of_birth = models.DateField(blank=True, null=True)    photo = models.ImageField(upload_to='users/%Y/%m/%d', blank=True)    def __str__(self):        return self.user.username为了Django能在开发服务中管理用户上传的多媒体文件,在项目setting.py文件中添加如下设置:MEDIA_URL = '/media/'MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')MEDIA_URL 是管理用户上传的多媒体文件的主URL,MEDIA_ROOT是这些文件在本地保存的路径。我们动态的构建这些路径相对我们的项目路径来确保我们的代码更通用化。在主urls 配置 文件的访问路径from django.conf import settingsfrom django.conf.urls.static import staticif settings.DEBUG:    urlpatterns += static(settings.MEDIA_URL,                        document_root=settings.MEDIA_ROOT)

定义modelform 让在前端能修改user模型 进行校验:

from .models import Profileclass UserEditForm(forms.ModelForm):    class Meta:        model = User        fields = ('first_name', 'last_name', 'email')class ProfileEditForm(forms.ModelForm):    class Meta:        model = Profile        fields = ('date_of_birth', 'photo')UserEditForm:允许用户编辑它们的first name,last name, e-mail 这些储存在User模型(model)中的内置字段。ProfileEditForm:允许用户编辑我们存储在定制的Profile模型(model)中的额外数据。用户可以编辑他们的生日数据以及为他们的profile上传一张照片。

编辑视图函数

from .forms import LoginForm, UserRegistrationForm, \UserEditForm, ProfileEditForm@login_requireddef edit(request):    if request.method == 'POST':        user_form = UserEditForm(instance=request.user,                                data=request.POST)        profile_form = ProfileEditForm(instance=request.user.profile,                                        data=request.POST,                                        files=request.FILES)        if user_form.is_valid() and profile_form.is_valid():            user_form.save()            profile_form.save()    else:        user_form = UserEditForm(instance=request.user)        profile_form = ProfileEditForm(instance=request.user.profile)    return render(request,                 'account/edit.html',                 {'user_form': user_form,                 'profile_form': profile_form})
原创粉丝点击