Django Rest框架总是返回错误400

时间:2018-04-16 19:03:11

标签: python django retrofit

我尝试使用Post方法,当有人发布正确的用户名和密码时返回令牌进行身份验证,但每次我收到400错误(我试着使用RetroFit for Android)< / p>

以下是我的网址(我使用tokken身份验证):

from rest_framework.authtoken import views as tmp

from decaught import views

router = routers.DefaultRouter()
router.register(r'devices', views.DeviceViewSet)
router.register(r'users', views.UserViewSet)

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^', include(router.urls)),
    url(r'^api-auth/', tmp.obtain_auth_token),
]

以下是我如何使用改装:

POST方法:

 @POST("/api-auth/")
    Call<Tokken> get_tokken(@Query("username") String username, @Query("password") String password);

登录方法:

 private void signIn() {
        boolean isValid = validate();
        if (isValid) {

            mService.get_tokken(user.getText().toString(), password.getText().toString()).enqueue(new Callback<Tokken>() {
                @Override
                public void onResponse(Call<Tokken> call, Response<Tokken> response) {
                    if (response.isSuccessful()) {

                        System.out.println("Te lo imprimo");
                        System.out.println(response.body().toString());
                        Toast.makeText(LoginActivity.this, "tokken recibido", Toast.LENGTH_SHORT).show();
                    } else {
                        int statusCode = response.code();
                        // handle request errors depending on status code
                    }
                }

                @Override
                public void onFailure(Call<Tokken> call, Throwable t) {
                    Toast.makeText(LoginActivity.this, "Error al recibir tokken", Toast.LENGTH_SHORT).show();

                    t.printStackTrace();
                    Log.d("MainActivity", "error loading from API");

                }
            });
            /*startActivity(new Intent(this, RolSelection.class));*/
        }
    }

但每次我尝试登录服务器时都会收到此消息:

  

[16 / Apr / 2018 20:56:06]&#34; POST /api-auth/?username=admin&password=admin1234HTTP/1.1" 400 79

知道为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

很有可能您将设置上的DEBUG标记设置为False,并且您不会设置ALLOWED_HOSTS。当您在调试模式下运行项目时,Django不会检查ALLOWED_HOSTS但是当此标志更改为False时Django会比较您的项目主机以及是否在ALLOWED_HOSTS列表中找不到此主机提出错误400。