我尝试使用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
知道为什么会这样吗?
答案 0 :(得分:0)
很有可能您将设置上的DEBUG
标记设置为False
,并且您不会设置ALLOWED_HOSTS
。当您在调试模式下运行项目时,Django不会检查ALLOWED_HOSTS
但是当此标志更改为False
时Django会比较您的项目主机以及是否在ALLOWED_HOSTS
列表中找不到此主机提出错误400。