2013-10-16 56 views
1

我是新来的Django并试图建立需要这些步骤为新用户的社交网站:Django注册或or django auth?

填写报名表 - >填写一些个人资料表 - >确认从电子邮件帐户 - >使用

PIP已经安装了Django 1.5.4。

我的问题是:对于这种情况,我应该使用Django-registraion还是使用本地Django-auth或其他模块?你会推荐哪个选项,为什么?

回答

1

这实际上取决于您想要的自定义级别。

注册表单可能看起来有点像不同的Django项目中的重复性任务,并且正在考虑大多数注册过程需要相同的基本步骤。但是,对于不同的项目,您可能需要扩展或排除某些步骤。

这是我使用登记视图的例子:

def register(request): 
    if request.method == 'POST': 
     register_form = RegisterForm(request.POST) 
     if register_form.is_valid(): 
      data = register_form.data 

      # create user 
      user = User.objects.create_user(
       username=data.get('username'), 
       email=data.get('email'), 
       password=data.get('password'), 
      ) 

      if user is not None: 
       auth = authenticate(username=data.get('username'), password=data.get('password')) 
       login(request, auth) 

       messages.success(request, _('Your new user has been created.')) 
       return redirect(reverse('home')) 
      else: 
       messages.error(request, _('Oops! Error.')) 
    else: 
     register_form = RegisterForm() 

    return render(request, 'accounts/register.html') 

这适用于几乎所有的项目。 RegisterForm拥有所有的魔力。

+0

我宁愿使用auth来完成它,主要是出于教育原因,但只是有点担心通过电子邮件管理注册验证。你是怎样做的? – supermario

+0

有多种方式可以做到这一点。您可以创建一个模型,其中包含一个OneToOne字段,另一个字段包含验证密钥。在我的答案中的“注册”视图中,创建一个新的验证模型实例,并通过链接启动一封电子邮件给用户进行验证。创建一个视图和一个URL来检查模型中的密钥,然后执行其他操作。一种不同的方法是缓存你的密钥并避免模型/表格。 – abstractpaper

0

django-allauth是一个相当完整的解决方案。即使您对社交登录和集成功能不感兴趣,您也可以轻松处理用户注册,个人档案,电子邮件验证等。