Django塔建移动端服务器的方法

Django塔建移动端服务器的方法
Django项目
在这里插入图片描述
1.连接数据库(setting文件中),省略过程。
2.在 INSTALLED_APPS 中插入(setting文件中),这里需要导入3个包,rest_framework_mongoengine和rest_framework和mongoengine。本人是在cmd中执行pip install 安装的。
‘rest_framework’,
‘service.apps.ServiceConfig’,
‘rest_framework_mongoengine’,

3.在view文件中
@api_view([‘POST’])
def android_user_api(request):
if request.method == ‘POST’:
_data = dict(request.data)
# 之前说过request.data是一个字典,可以利用这个
if _data[‘method’][0] == ‘_GET’:
user = User.objects.get(name=_data[‘name’][0], pwd=_data[‘pwd’][0])
serializer = UserSerializer(user)
return Response(serializer.data, status=status.HTTP_200_OK)
elif _data[‘method’][0] == ‘_POST’:
# request.data 中多余的数据不会保存到数据库中
serializer = UserSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(status=status.HTTP_400_BAD_REQUEST)
elif _data[‘method’][0] == ‘_PUT’:
user = User.objects.get(name=_data[‘name’][0])
serializer = UserSerializer(user, data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_202_ACCEPTED)
return Response(status=status.HTTP_400_BAD_REQUEST)
elif _data[‘method’][0] == ‘_DELETE’:
User.objects.get(name=_data[‘name’][0]).delete()
return Response(serializer.data, status=status.HTTP_204_ACCEPTED)
4.添加urls
在这里插入图片描述
5.android端
首先需要添加两个包
在这里插入图片描述
添加依赖包:
implementation files(‘libs/android-async-http-1.4.9.jar’)
implementation files(‘libs/httpclient-4.3.6.jar’)
解析数据类,
public class JSONTOOL {

public static List<HashMap<String, String>> analyze_some_json (String data ){
    ArrayList<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();
    JSONArray jsons = null;
    try {
        jsons = new JSONArray(data);
    } catch (JSONException e) {
        e.printStackTrace();
    }

    int i = 0;
    while(i < jsons.length()){
        try {
            list.add(analyze_once_json(jsons.get(i).toString()));
        } catch (JSONException e) {
            e.printStackTrace();
        }
        i++;
}
    return list;

}

public static HashMap<String, String> analyze_once_json(String data){
    HashMap<String, String> map = new HashMap();
    JSONObject obj = null;
    try {
        obj = new JSONObject(data);
    } catch (JSONException e) {
        e.printStackTrace();
    }
    Iterator it = obj.keys();
    while(it.hasNext()){
        String key = (String)it.next();
        try {
            map.put(key, obj.getString(key));
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }
    return map;
    }

}

接受发送状态码类,状态为3,请求成功,状态码为30请求失败。
public class MyTextListener extends TextHttpResponseHandler {
Handler handler;
int s_state, f_state;

public MyTextListener(Handler handler, int s_state, int f_state) {
    this.handler = handler;
    this.s_state = s_state;
    this.f_state = f_state;
}

Message msg = Message.obtain();
@Override
public void onFailure(int i, Header[] headers, String s, Throwable throwable) {
    msg.what = f_state;
    handler.sendMessage(msg);
}
@Override
public void onSuccess(int i, Header[] headers, String s) {
    msg.what = s_state;
    msg.obj = s;
    handler.sendMessage(msg);
}
public void onFailure(int i,Header[] headers , String s) {
    // 失败访问
    msg.what = f_state;
    handler.sendMessage(msg);
}

}

下面来一例子吧
public void onClick(View v) {
@SuppressLint(“HandlerLeak”)
Handler handler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case 3:
HashMap<String,String> map = JSONTOOL.analyze_once_json(msg.obj.toString());//解析数据
//String s = map.get(“username”);//接收数据
t = Toast.makeText(MainActivity.this, “登陆成功”, Toast.LENGTH_LONG);//淇℃伅妗?
Intent intent = new Intent(MainActivity.this, HomeActivity.class);
startActivity(intent);
MainActivity.this.finish();
break;
case 30:
t = Toast.makeText(MainActivity.this, “登录失败”, Toast.LENGTH_LONG);//淇℃伅妗?
t.show();
break;
}
super.handleMessage(msg);
}
};
AsyncHttpClient client = new AsyncHttpClient();
RequestParams params = new RequestParams();
switch (v.getId()) {
case R.id.loginbtn:
params.put(“method”, “_GET”);
params.put(“table”, “user”);
params.put(“username”, useNameEt.getText().toString());
params.put(“password”, passwordEt.getText().toString());
client.post(“http://192.168.43.217:8000/android_user/”, params,//发送请求
new MyTextListener(handler, 3, 30));
break;
}
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值