okもう一度聞いてきました。django登録とデータの保存
今回私は、バックエンドでdjango-registrationを使用しています。
なぜ私のregbackend.pyが他の多くの関数を持っているのか不思議であれば、サーバはそれらのメソッドについて不平を言っていましたので、そこにコピーして貼り付けました。
しかし、バックエンドがデータベースに保存するsave関数をどのように呼び出すのかを知りたいだけです。
私はそれがここで呼び出されると思ったので、ここにsaveメソッドを含めました。それ以外の場合は、すでに私のforms.pyにあります。
私は実際にピンナップとジャンゴのプロファイルを見てみましたが、それは私のプロジェクトの全体的な見直しを必要とするでしょう。
ありがとうございました。
forms.py:
from django import forms
from r2.models import Keyword
from r2.models import UserProfile
from registration.forms import RegistrationForm
from registration.models import RegistrationProfile
from django.utils.translation import ugettext_lazy as _
from registration.forms import RegistrationForm, attrs_dict
class ProjectSpecificRegistrationForm(RegistrationForm):
keywords = forms.ModelChoiceField(queryset=Keyword.objects.all())
first_name =forms.CharField(widget=forms.TextInput(attrs=attrs_dict),label=_(u'First Name'))
last_name =forms.CharField(widget=forms.TextInput(attrs=attrs_dict),label=_(u'Last Name'))
def save(self, profile_callback=None):
new_user = RegistrationProfile.objects.create_inactive_user(username=self.cleaned_data['username'],
password=self.cleaned_data['password1'],
email=self.cleaned_data['email'])
new_profile = UserProfile(user=new_user,username=self.cleaned_data['username'], keywords_subscribed=self.cleaned_data['keywords'],first_name=self.cleaned_data['first_name'],last_name=self.cleaned_data['last_name'])
new_profile.save()
return new_user()
Urls.py:CRへ
from django.conf import settings
from django.contrib.sites.models import RequestSite
from django.contrib.sites.models import Site
from django.contrib.auth.models import User
from registration import signals
from registration.forms import RegistrationForm
from registration.models import RegistrationProfile
from r2.forms import ProjectSpecificRegistrationForm
from r2.models import *
class RegBackend(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)
user = User.objects.get(username=new_user.username)
user.first_name = kwargs['first_name']
user.last_name = kwargs['last_name']
user.keywords = kwargs['keywords']
signals.user_registered.send(sender=self.__class__, user=new_user, request=request)
user.save()
return new_user
def save(self, profile_callback=None):
print('Came in')
new_user = RegistrationProfile.objects.create_inactive_user(username=self.cleaned_data['username'],
password=self.cleaned_data['password1'],
email=self.cleaned_data['email'])
new_profile = UserProfile(user=new_user,username=self.cleaned_data['username'], keywords_subscribed=self.cleaned_data['keywords'],first_name=self.cleaned_data['first_name'],last_name=self.cleaned_data['last_name'])
new_profile.save()
return new_user()
def registration_allowed(self, request):
return getattr(settings, 'REGISTRATION_OPEN', True)
def post_registration_redirect(self, request, user):
return ('registration_complete',(), {})
意図が私には間違っているようです。 – DrTyrsa