掲示板?のようなものをを作りたいと思っています。
そこで、まずはシンプルなものからと思い、以下の機能を開発しようとしています。
①android stdioのedit text等に項目を入力後コメント投稿用のボタンでdjangoのデータベースに保存する。
②コメント一覧表示用のボタンでデータベースに入っている情報を取得し表示させる。
①の処理は問題なくできたのですが、いくらPOSTメソッドで情報を追加して②の処理をしても初め?に取得した情報と同じ情報が返ってきます。
汚く無駄の多いコードで申し訳ないですがよろしくお願いします。
java
1//対応するボタンを押したらGetTaskクラス呼び出し 2 GetTask getTask = new GetTask(){ 3 @Override 4 protected void onPostExecute(String result) { 5 6 //クリア 7 PublicJsonArray.body.clear(); 8 PublicJsonArray.level.clear(); 9 PublicJsonArray.title.clear(); 10 PublicJsonArray.name.clear(); 11 PublicJsonArray.facility_id.clear(); 12 13 JSONObject jsonObject; 14 System.out.print("ViewCommentActivity" + PublicJsonArray.jsonArray); 15 for(int i = 0; i < PublicJsonArray.jsonArray.length(); i++){ 16 try { 17 //データベースから取得した値を属性ごとに各配列に格納 18 jsonObject = (JSONObject) PublicJsonArray.jsonArray.get(i); 19 PublicJsonArray.facility_id.add(jsonObject.getInt("facility_id")); 20 PublicJsonArray.name.add(jsonObject.getString("name")); 21 PublicJsonArray.title.add(jsonObject.getString("title")); 22 PublicJsonArray.level.add(jsonObject.getInt("level")); 23 PublicJsonArray.body.add(jsonObject.getString("body")); 24 } catch (JSONException e) { 25 e.printStackTrace(); 26 } 27 } 28 29 TextView textView = (TextView)findViewById(R.id.text_view); 30 textView.setMovementMethod(ScrollingMovementMethod.getInstance()); 31 textView.append("\r\n"); 32 textView.append(PublicJsonArray.body.size() + "項目あります" + "\r\n"); 33 for(int i = 0; i < PublicJsonArray.body.size(); i++){ 34 //配列に格納した情報をTextViewにそのまま表示 35 textView.append("施設ID : " + PublicJsonArray.facility_id.get(i).toString() + "\r\n "); 36 textView.append("ニックネーム : " + PublicJsonArray.name.get(i) + "\r\n "); 37 textView.append("タイトル : " + PublicJsonArray.title.get(i) + "\r\n "); 38 textView.append("評価 : " + PublicJsonArray.level.get(i).toString() + "\r\n "); 39 textView.append("テキスト : " + PublicJsonArray.body.get(i) + "\r\n "); 40 textView.append("\r\n \r\n "); 41 } 42 43 } 44 }; 45 getTask.execute(""); //ここに施設IDを入力するとフィルタリングできる(例 : 2/) 46 47//GetTaskクラス 48import android.os.AsyncTask; 49 50public abstract class GetTask extends AsyncTask<String, Void, String>{ 51 52 @Override 53 protected abstract void onPostExecute(String result); 54 55 @Override 56 protected String doInBackground(String... strings) { 57 String URL = "http://X.X.X.X/snippets/"; //X.X.X.XはIPアドレス 58 59 GetClass getClass = new GetClass(); 60 String str = getClass.Getexecute(URL); 61 return str; 62 } 63 64} 65 66//GetClassクラス 67public class GetClass { 68 /** 69 * GETメソッドで文字列を取得する。 70 * 71 * @param URL アクセスするURL 72 * @return レスポンス 73 */ 74 public String Getexecute(String URL) { 75 HttpURLConnection urlConnection = null; 76 int responseCode = 0; 77 String responseData = ""; 78 try { 79 //ステップ1:接続URLを決める。 80 URL url = new URL(URL); 81 82 //ステップ2:URLへのコネクションを取得する。 83 urlConnection = (HttpURLConnection) url.openConnection(); 84 //ステップ3:接続設定(メソッドの決定,タイムアウト値,ヘッダー値等)を行う。 85 //接続タイムアウトを設定する。 86 urlConnection.setConnectTimeout(100000); 87 //レスポンスデータ読み取りタイムアウトを設定する。 88 urlConnection.setReadTimeout(100000); 89 //ヘッダーにUser-Agentを設定する。 90 urlConnection.setRequestProperty("User-Agent", "Android"); 91 //ヘッダーにAccept-Languageを設定する。 92 urlConnection.setRequestProperty("Accept-Language", Locale.getDefault().toString()); 93 //HTTPのメソッドをGETに設定する。 94 urlConnection.setRequestMethod("GET"); 95 //リクエストのボディ送信を許可しない 96 urlConnection.setDoOutput(false); 97 //レスポンスのボディ受信を許可する 98 urlConnection.setDoInput(true); 99 //ステップ4:コネクションを開く 100 urlConnection.connect(); 101 //ステップ6:レスポンスボディの読み出しを行う。 102 responseCode = urlConnection.getResponseCode(); 103 responseData = convertToString(urlConnection.getInputStream()); 104 } catch (IOException e) { 105 e.printStackTrace(); 106 } finally { 107 if (urlConnection != null) { 108 //ステップ7:コネクションを閉じる。 109 urlConnection.disconnect(); 110 } 111 } 112 Log.d("execute", "URL:" + URL); 113 Log.d("execute", "HttpStatusCode:" + responseCode); 114 Log.d("execute", "ResponseData:" + responseData); 115 return responseData; 116 117 } 118 public String convertToString(InputStream stream) throws IOException { 119 StringBuffer sb = new StringBuffer(); 120 String line = ""; 121 BufferedReader br = new BufferedReader(new InputStreamReader(stream, "UTF-8")); 122 while ((line = br.readLine()) != null) { 123 sb.append(line); 124 try { 125 jsonArray = new JSONArray(line); 126 } catch (JSONException e) { 127 e.printStackTrace(); 128 } 129 } 130 try { 131 stream.close(); 132 br.close(); 133 } catch (Exception e) { 134 e.printStackTrace(); 135 } 136 137 return sb.toString(); 138 } 139} 140
django
python
1#Views.py 2 3from django.shortcuts import render 4from django.http import HttpResponse, JsonResponse 5from django.views.decorators.csrf import csrf_exempt 6from rest_framework.renderers import JSONRenderer 7from rest_framework.parsers import JSONParser 8from snippets.models import Snippet 9from snippets.serializers import SnippetSerializer 10 11 12# Create your views here. 13@csrf_exempt 14def snippet_list(request): 15 """ 16 List all code snippets, or create a new snippet. 17 """ 18 19 20 if request.method == 'GET': 21 snippets = Snippet.objects.all() 22 serializer = SnippetSerializer(snippets, many=True) 23 return JsonResponse(serializer.data, safe=False) 24 25 elif request.method == 'POST': 26 data = JSONParser().parse(request) 27 serializer = SnippetSerializer(data=data) 28 if serializer.is_valid(): 29 serializer.save() 30 return JsonResponse(serializer.data, status=201) 31 return JsonResponse(serializer.errors, status=400) 32 op 33 34@csrf_exempt 35def snippet_detail(request, pk): 36 """ 37 Retrieve, update or delete a code snippet. 38 """ 39 40 try: 41 snippet = Snippet.objects.filter(facility_id=pk) 42 except Snippet.DoesNotExist: 43 return HttpResponse(status=404) 44 45 if request.method == 'GET': 46 serializer = SnippetSerializer(snippet, many=True) 47 return JsonResponse(serializer.data, safe=False) 48 49#setting.py 50import os 51 52BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 53 54 55 56SECRET_KEY = ? 57 58DEBUG = True 59 60ALLOWED_HOSTS = ["X.X.X.X"] 61 62 63 64INSTALLED_APPS = [ 65 'django.contrib.admin', 66 'django.contrib.auth', 67 'django.contrib.contenttypes', 68 'django.contrib.sessions', 69 'django.contrib.messages', 70 'django.contrib.staticfiles', 71 'rest_framework', p 72 'snippets.apps.SnippetsConfig', 73] 74 75MIDDLEWARE = [ 76 'django.middleware.security.SecurityMiddleware', 77 'django.contrib.sessions.middleware.SessionMiddleware', 78 'django.middleware.common.CommonMiddleware', 79 'django.middleware.csrf.CsrfViewMiddleware', 80 'django.contrib.auth.middleware.AuthenticationMiddleware', 81 'django.contrib.messages.middleware.MessageMiddleware', 82 'django.middleware.clickjacking.XFrameOptionsMiddleware', 83] 84 85ROOT_URLCONF = 'tutorial.urls' 86 87TEMPLATES = [ 88 { 89 'BACKEND': 'django.template.backends.django.DjangoTemplates', 90 'DIRS': [], 91 'APP_DIRS': True, 92 'OPTIONS': { 93 'context_processors': [ 94 'django.template.context_processors.debug', 95 'django.template.context_processors.request', 96 'django.contrib.auth.context_processors.auth', 97 'django.contrib.messages.context_processors.messages', 98 ], 99 }, 100 }, 101] 102 103WSGI_APPLICATION = 'tutorial.wsgi.application' 104DATABASES = { 105 'default': { 106 'ENGINE': 'django.db.backends.sqlite3', 107 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), 108 } 109} 110 111 112AUTH_PASSWORD_VALIDATORS = [ 113 { 114 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', p 115 }, 116 { 117 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', 118 }, 119 { 120 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', 121 }, 122 { 123 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', 124 }, 125] 126 127 128 129LANGUAGE_CODE = 'ja' 130 131TIME_ZONE = 'Asia/Tokyo' 132 133USE_I18N = True 134 135USE_L10N = True 136 137USE_TZ = True 138 139APPEND_SLASH = False 140 141STATIC_URL = '/static/'
回答1件
あなたの回答
tips
プレビュー