次のコードがあります。
私はdjango restフレームワークを使用しています。
私は基本的にユーザーが登録できるようにしたいと考えています。メールアドレス、パスワード、ユーザー名をPOSTでお送りします。
django rest フレームワークを正しく使用していないように感じます。
以下のコードを教えてください。
ジャンゴレストフレームワークの原則に準拠するように構造化する最良の方法は何ですか?
また、以下のフォームは無効です... エラーメッセージを返信するにはどうすればよいですか?
@api_view(['POST'])
def user_login(request):
profile = request.POST
if ('id' not in profile or 'email_address' not in profile or 'oauth_secret' not in profile):
return Response(
status=status.HTTP_204_NO_CONTENT)
identifier = profile['id']
email_address = profile['email_address']
oauth_secret = profile['oauth_secret']
firstname = None
if 'first_name' in profile:
firstname = profile['first_name']
lastname = None
if 'last_name' in profile:
lastname = profile['last_name']
bio = None
if 'bio' in profile:
bio = profile['bio']
oauth_token = None
if 'oauth_token' in profile:
oauth_token = profile['oauth_token']
investor = None
if 'investor' in profile:
investor = profile['investor']
user_form = dict()
user_form['username'] = 'l' + identifier
user_form['password1'] = oauth_secret
user_form['password2'] = oauth_secret
user_form['email'] = email_address
photo = None
noConnections = 0
if 'pictureUrl' in profile:
photo = profile['pictureUrl']
if 'numConnections' in profile:
noConnections = profile['numConnections']
try:
user = User.objects.get(username=identifier)
except User.DoesNotExist:
serializer = UserRegisterSerializer(data=user_form)
if serializer.is_valid():
user = serializer.save()
user.first_name = firstname
user.last_name = lastname
user.save()
# Save our permanent token and secret for later.
userprofile = user.get_profile()
userprofile.bio = bio
userprofile.photo = photo
userprofile.no_linked_con = noConnections
userprofile.oauth_token = oauth_token
userprofile.oauth_secret = oauth_secret
userprofile.save()
else:
return Response(
serializer.errors,
status=status.HTTP_400_BAD_REQUEST)
user = authenticate(username=identifier, password=oauth_secret)
login(request, user)
if not investor:
send_mail(
'Please complete your startup profile',
'Here is the message.',
'from@example.com',
list(email_address))
serializer = UserSerializer(user)
return Response(serializer.data)