質問するログイン新規登録

Q&A

0回答

710閲覧

iOSのTextFieldから入力した文字列をDjango側に送りたい

mememehollow

総合スコア6

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2020/04/20 10:17

0

0

###前提・実現したいこと
Swift側でTextFieldを作り、そこに文字を打って、その文字をAlamofireのPOSTリクエストでDjango側に送り、Django側で表示させたいです。

###発生している問題
Swift側で設定したparametersを辞書で設定し、Alamofire.requestでPOSTで送っているのですが、Django側で受け取った辞書が空で表示されてしまいます。一応通信は成功しています。

DjangoSide

1<MultiValueDict: {}> 2[20/Apr/2020 16:20:33] "POST /money_management/post/ HTTP/1.1" 200 2 3

###当該のソースコード
以下、Alamofire部分です。

Swift

1import Foundation 2import Alamofire 3 4class PostObserver:ObservableObject { 5 @Published var postString = String() 6 7 init() { 8 self.post() 9 } 10 11 func post() { 12 print(postString) 13 let data:[String:Any] = ["msg":postString] 14 Alamofire.request("http://localhost:8000/money_management/post/", method: .post, encoding: JSONEncoding.default) 15 .responseJSON { response in 16 if response.result.isSuccess { 17 print("成功しました") 18 print(data) 19 20 } else { 21 print("失敗してはります。") 22 } 23 } 24 } 25}

一応ですが、TextFieldを表示させるコードも以下に載せます。

Swift

1import SwiftUI 2import AVFoundation 3 4struct PostView: View { 5 @State var en:String = "" 6 @ObservedObject var postObserver = PostObserver() 7 8 var body: some View { 9 10 VStack { 11 TextField("0", text: $en) 12 .textFieldStyle(RoundedBorderTextFieldStyle()) 13 .frame(width: 200) 14 .padding(.bottom, 50) 15 16 Button(action: { 17 self.postObserver.postString = self.en 18 self.postObserver.post() 19 }) { 20 Text("ボタン") 21 .background( 22 Circle() 23 .foregroundColor(.red) 24 .frame(width:100, height:100) 25 26 ) 27 28 }.padding() 29 30 } 31 32 } 33} 34 35struct PostView_Previews: PreviewProvider { 36 static var previews: some View { 37 PostView() 38 } 39}

また、DjangoのViewの該当部分を載せます。

DjangoSide

1from django.http import HttpResponse, JsonResponse 2from django.views.decorators.csrf import csrf_protect, csrf_exempt 3 4@csrf_exempt 5def post(request): 6 if request.method == 'POST': 7 string = request.FILES 8 print(string) 9 return JsonResponse(request.FILES) 10

コードの説明としてはAlamofireでparameters=["msg": postString]で初期化し、これをDjangoに送りたい、というコードです。このpostStringはTextFieldで入力したものです。これにより、入力したものをDjangoに送ろうとしています。

Django側のrequest.FILESでSwift側のTextFieldで入力した文字列を受け取って、それをprint(string)で表示させようとしています。また、データをhttp://localhost:8000/money_management/post/ にアクセスした時にブラウザ上に表示されるようにしたいです。

あまり自信のないコードですが、どうかよろしくお願いします。

###補足事項
Alamofire 4.8.2を使用

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.25%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問