use*_*236 3 django django-forms django-registration
我正在尝试自定义Django注册表单.我有mysite项目,我已经创建了registration1应用程序.
mysite的/ registration1/forms.py
from registration.forms import RegistrationForm
from django import forms
class UserRegistrationForm(RegistrationForm):
unique_id = forms.CharField(min_length=12,max_length=12,label=("Unique id"))
Run Code Online (Sandbox Code Playgroud)
mysite的/ regbackend.py
import profile
from registration1.forms import UserRegistrationForm
from django.conf import settings
from django.contrib.sites.models import RequestSite
from django.contrib.sites.models import Site
from registration import signals
from registration.forms import RegistrationForm
from registration.models import RegistrationProfile
class MyBackend(object):
def register(self, request, **kwargs):
username, email, password = kwargs['username'],kwargs['email'], kwargs['password1']
if Site._meta.installed:
site = Site.objects.get_current()
else:
site = RequestSite(request)
new_user = RegistrationProfile.objects.create_inactive_user(username, email,
password, site)
signals.user_registered.send(sender=self.__class__,
user=new_user,
request=request)
user = User.objects.get(username=username)
user.unique_id=kwargs['unique_id']
address_user = Address()
address_user.save()
contact_user = Contact(address=address_user,email=user.email)
contact_user.save()
address_company = Address()
address_company.save()
contact_company = Contact(address=address_company)
contact_company.save()
company = Company(contact=contact_company, admin=user)
company.save()
user_profile = UserProfile(user=user,contact=contact_user,position='',company=company )
user_profile.save()
user.save()
return new_user
Run Code Online (Sandbox Code Playgroud)
mysite的/ urls.py
from registration.views import register
import registration.backends.default.urls as regUrls
import mysite.regbackend
from registration1.forms import UserRegistrationForm
url(r'^accounts/register/$', register,{'backend':'mysite.regbackend.MyBackend','form_class': UserRegistrationForm},name='registration_register'),
Run Code Online (Sandbox Code Playgroud)
但这给了我错误
'MyBackend' object has no attribute 'registration_allowed'
Run Code Online (Sandbox Code Playgroud)
我还想将原始Django注册表单中的用户名替换为用户输入的unique_id?
我建议你使用两个默认后端中的任何一个来继承和覆盖一些方法:
....
from registration.backends.default import SimpleBackend
class MyBackend(SimpleBackend):
....
Run Code Online (Sandbox Code Playgroud)
或者如果您需要通过电子邮件确认后端:
....
from registration.backends.default import DefaultBackend
class MyBackend(DefaultBackend):
....
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4466 次 |
| 最近记录: |