如何在用户登录时添加其他用户信息?

时间:2015-11-17 19:55:13

标签: django django-models django-views

我在页面中创建了一个登录,现在想要将用户重定向到一个页面以添加其他用户信息。如何确保用户“登录”并将信息添加到该用户的配置文件中?我知道我需要使用user = User.objects.get(email = email)之类的东西来识别用户,但我不想让用户在每个页面上输入他们的电子邮件来识别自己。我可以传递一些东西来保持用户登录吗?

以下是观点:

def add_user_profile(request):
    # if this is a POST request we need to process the form data
    if request.method == 'POST':
        # create a form instance and populate it with data from the request:
        form = AddUserProfileForm(request.POST)
        # check whether it's valid:
        if form.is_valid():
            # process the data in form.cleaned_data as required
            # ...
            # redirect to a new URL:
            return HttpResponseRedirect('/summary/')

    # if a GET (or any other method) we'll create a blank form
    else:
        form = AddUserProfileForm()


    return render(request, 'registration/add_user_profile.html', {'form': form})

以下是表格:

class AddUserProfileForm(forms.ModelForm):

    this_year = datetime.date.today().year
    Years = range(this_year-70, this_year+1)

    required_css_class = 'required'
    first_name = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'First Name'}), label="")
    middle_name = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'Middle Name'}), label="")
    last_name = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'Last Name'}), label="")
    date_of_birth = forms.DateField(widget=forms.extras.widgets.SelectDateWidget(years=Years))
    Primary_address = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'Primary address'}), label="")
    Primary_address_zipcode = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'Zip Code'}), label="")

    class Meta:
        model = User
        fields = ('first_name', 'middle_name', 'last_name', 'date_of_birth', 'Primary_address', 'Primary_address_zipcode')

这是url.py

url(r'^add_user_profile/$',
                       views.add_user_profile,
                       name='add_user_profile'),

1 个答案:

答案 0 :(得分:0)

您只需要创建一个处理request.user的视图。如果您的update_profile功能相当简单,可以查看UpdateView。您只需要覆盖get_object(),如下所示:

def get_object(self, queryset=None):
    return self.request.user

在此之后,您只需要设置UpdateView并创建一个合适的模板。您可以在文档中阅读相关内容。