2014-10-29 113 views
7

我一直在阅读很多关于此问题的问题和答案,但仍然没有好运气。例如here是一个很好的答案,但很可能不适用于django-registration 1.0。如何在Django注册中添加额外的(自定义)字段1.0

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

+0

为什么这么说呢,答案并不适用于Django的注册1.0吗? – 2014-10-29 14:40:51

+0

@ChrisHawkes我得到一个“无法导入名称寄存器”的错误。我认为注册是在Django注册1.0中被剥夺的。我尝试使用“url(r'^ register/$',RegistrationView.as_view(form_class = UserRegForm))”。但仍没有运气 – Iqbal 2014-10-29 14:47:22

+0

所提供的用以修复错误和Django注册的新版本,你必须添加这个问题的答案之一, 从django.conf.urls进口模式,包括从registration.backends网址 .default.views进口RegistrationView 从abby.apps.accounts.forms导入UserRegForm urlpatterns的=模式( '', URL(R '^寄存器/ $',RegistrationView.as_view(form_class = UserRegForm)), ) http://stackoverflow.com/questions/14726725/python-django-django-registration-add-an-extra-field/16366997#16366997 – 2014-10-29 15:14:35

回答

0

既然你还没有答案,我提供这一个,虽然它不完全是你所要求的。我认为它可以帮助你无论如何,虽然...

这是我在几个项目中使用django注册1.0,Python 2.7和Django 1.6。在这种情况下,我只需使用username,emailpassword进行注册,然后用户可以在注册后添加配置文件字段。将其修改为在注册时接受字段不应太难。

我使用Twitter Bootstrap进行造型,所以我的模板可能会帮助你,也可能不会帮助你。在这种情况下,我把它们排除在外。

我创建了几个应用程序称为accountsauthentication持有我的模型,表单和视图:

accounts.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) 

authentiction.forms.EditUserProfileForm

from django.forms import ModelForm 

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

个accounts.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'), 
相关问题