作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在我的 Web 应用程序中使用了 allauth 来注册功能。在社交帐户注册中,收集了用户的电子邮件、密码、名字和姓氏。在登录表单中,我只收集用户的电子邮件和密码。
登录后,我的应用程序会将用户重定向到个人资料页面,如果他/她愿意,他/她应该在该页面更新她的个人资料(包括新的和自定义的字段,如我添加的“机构”)。
作为 django-allauth 初学者的问题,我想知道如何将这些新的自定义字段添加到我的用户配置文件中,以及如何在用户注册后更新这些数据。
到现在为止我做了什么:
在settings.py中
AUTH_USER_MODEL = 'auth.User'
from django.db import models
from django.contrib.auth.models import User
class UserProfile(models.Model):
institution = models.TextField(max_length=254)
{% extends 'base.html' %}
{% block title %}Profile Page{%endblock title%}
{% if user.is_authenticated %}
{%block body%}
<div class="col-md-6" >
<div class="panel panel-default">
<div class="panel-body">
<h1 class="text-center"><b>MY ONTOLOGIES</b></h1><br>
</div>
</div>
</div>
<div class="col-md-6" >
<div class="panel panel-default">
<div class="panel-body">
<h1 class="text-center"><b>MY PROFILE</b></h1><br>
<div class="form-group">
{% csrf_token %}
<label for="id_login" class="col-sm-2 control-label">E-mail:</label>
<div class="col-sm-10">
<input type="email" id="asd" value="{{user.email}}" name="login" class="form-control" required />
</div><br><br>
<label for="first_name" class="col-sm-2 control-label">First Name:</label>
<div class="col-sm-10">
<input type="text" id="id_first_name" value="{{user.first_name}}" name="first_name" class="form-control" required />
</div><br><br>
<label for="last_name" class="col-sm-2 control-label">Last Name:</label>
<div class="col-sm-10">
<input type="text" id="id_last_name" value="{{user.last_name}}" name="last_name" class="form-control" required />
</div><br><br>
<label for="institution" class="col-sm-2 control-label">Institution:</label>
<div class="col-sm-10">
<input type="text" id="id_institution" value="{{user.institution}}" name="institution" class="form-control" placeholder="University/Company" required />
</div><br><br>
<label for="id_password1" class="col-sm-2 control-label">New Password:</label>
<div class="col-sm-10">
<input class="form-control" id="id_password1" name="password1" placeholder="New Password" type="password" />
</div><br><br>
<label class="col-sm-2" for="id_password2">New Password (again):</label>
<div class="col-sm-10">
<input class="form-control" id="id_password2" name="password2" placeholder="New Password (again)" type="password" />
</div>
</div>
</div>
</div>
</div>
{%endblock body%}
{% endif %}
最佳答案
我分两步解决了这个问题,并涉及重构我在问题中发布的代码:
INSTALLED_APPS = [
...
'CustomUser.apps.CustomuserConfig',
]
AUTH_USER_MODEL = 'CustomUser.CustomUser'
from __future__ import unicode_literals
from django.contrib.auth.models import AbstractUser
from django.db import models
class CustomUser(AbstractUser):
add_your_custom_fields_here
from __future__ import unicode_literals
from django.apps import AppConfig
class CustomuserConfig(AppConfig):
name = 'CustomUser'
from django.contrib import admin
from .models import CustomUser
admin.site.register(CustomUser)
class UpdateUserForm(forms.ModelForm):
class Meta:
model = CustomUser
# Add here the fields you want to be present in the update form
fields = ('first_name', 'last_name', 'institution')
Update your data <br><br>
<form action="." method="post">
{% csrf_token %}
{{ form }}
<input type="submit" value="Submit" />
</form>
from django.shortcuts import render
from .forms import UpdateUserForm
from django.http import HttpResponseRedirect
from django.views.generic import UpdateView
from django.core.urlresolvers import reverse_lazy
def profile(UpdateView):
if request.method == 'POST':
form = UpdateUserForm(request.POST)
if form.is_valid():
return HttpResponseRedirect('/accounts/profile/')
else:
form = UpdateUserForm()
return render(request, 'profile.html', {'form':form})
class UserUpdate(UpdateView):
form_class = UpdateUserForm
template_name = 'profile.html'
success_url = reverse_lazy('profile')
#get object
def get_object(self, queryset=None):
return self.request.user
from CustomUser import views
url(r'^accounts/profile/$', views.UserUpdate.as_view() , name='profile'),
关于django - 注册后如何在 allauth 中自定义用户配置文件字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40811437/
我是一名优秀的程序员,十分优秀!