gpt4 book ai didi

django - 如何在 Django-registration 1.0 中添加额外的(自定义)字段

转载 作者:行者123 更新时间:2023-12-04 12:58:14 27 4
gpt4 key购买 nike

我已经阅读了很多关于此的问题和答案,但仍然没有好运。例如 here是一个很好的答案,但很可能不适用于 django-registration 1.0。

我的目标是在注册表单中添加两个自定义字段,即组织和职位。
备注 :我正在使用由 registration.backend.simple 提供的一步 django 注册。

最佳答案

由于您还没有答案,我提供了这个,尽管这不是您所要求的。我认为无论如何它可能会帮助你,但......

这就是我在使用 django-registration 1.0、Python 2.7 和 Django 1.6 的几个项目中完成的方式。在这种情况下,我只使用 username , emailpassword注册,然后用户可以在注册后添加个人资料字段。在注册时修改它以接受字段应该不会太难。

我使用 Twitter Bootstrap 进行样式设置,因此我的模板可能对您有帮助,也可能无济于事。在这种情况下,我将它们排除在外。

我创建了几个名为 accounts 的应用程序和 authentication保存我的模型、表单和 View :

account.models.UserProfile

from django.db import models

class UserProfile(models.Model):
user = models.OneToOneField(User)
title = models.CharField(max_length=100)
company = models.CharField(max_length=250)

authentication.forms.EditUserProfileForm
from django.forms import ModelForm

class EditUserProfileForm(ModelForm):**
. . .
title = forms.CharField(widget=forms.TextInput())
company = forms.CharField(widget=forms.TextInput())
. . .

account.views.EditUserProfileView
from django.views.generic.base import View
from django.utils.decorators import method_decorator
from django.contrib.auth.decorators import login_required
from django.shortcuts import render, get_object_or_404
from django.http import HttpResponseRedirect

from .models import UserProfile
from .forms import EditUserProfileForm

class EditUserProfileView(View):

form_class = EditUserProfileForm
template_name = 'accounts/profile_edit.html'

@method_decorator(login_required)
def get(self, request, *args, **kwargs):

profile = get_object_or_404(UserProfile, user=request.user)

form_dict = {
'title': profile.title,
'company': profile.company,
}

form = self.form_class(form_dict)

return render(request, self.template_name, {
'form': form,
'profile': profile,
})

@method_decorator(login_required)
def post(self, request, *args, **kwargs):

profile = get_object_or_404(UserProfile, user=request.user)

form = self.form_class(request.POST, instance=profile)

if form.is_valid():

company = form.cleaned_data['company']
title = form.cleaned_data['title']

title.company = title
profile.company = company

# you might need to save user too, depending on what fields
request.user.save()
profile.save()

return HttpResponseRedirect('/dashboard/')

return render(request, self.template_name, {'form': form})

project.urls
url(r'^accounts/profile/edit/', EditUserProfileView.as_view(),  name='edit_user_profile_view'),

关于django - 如何在 Django-registration 1.0 中添加额外的(自定义)字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26632359/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com