我正在嘗試從 Flutter 登錄到我的 Django Rest Framework,但我總是收到相同的錯誤 Invalid Password 盡管憑據是正確的。
這是 login_request_model.dart:
class LoginRequestModel {
LoginRequestModel({
this.username,
this.email,
this.password,
});
late final String? username;
late final String? email;
late final String? password;
LoginRequestModel.fromJson(Map<String, dynamic> json) {
username = json['username'];
email = json['email'];
password = json['password'];
}
Map<String, dynamic> toJson() {
final _data = <String, dynamic>{};
_data['username'] = username;
_data['email'] = email;
_data['password'] = password;
return _data;
}
}
這是 login_page.dart:
class LoginPage extends StatefulWidget {
const LoginPage({Key? key}) : super(key: key);
@override
_LoginPageState createState() => _LoginPageState();
}
class _LoginPageState extends State<LoginPage> {
bool isApiCallProcess = false;
bool hidePassword = true;
GlobalKey<FormState> globalFormKey = GlobalKey<FormState>();
String? userName;
String? password;
@override
void initState() {
super.initState();
}
插入登錄名的 login_page.dart 的其余部分:
Center(
child: FormHelper.submitButton(
"Login",
() {
if (validateAndSave()) {
setState(() {
isApiCallProcess = true;
});
LoginRequestModel model = LoginRequestModel(
username: userName,
password: password,
);
APIService.login(model).then(
(response) {
setState(() {
isApiCallProcess = false;
});
if (response) {
Navigator.pushNamedAndRemoveUntil(
context,
'/home',
(route) => false,
);
} else {
FormHelper.showSimpleAlertDialog(
context,
Config.appName,
"Invalid Username/Password !!",
"OK",
() {
Navigator.of(context).pop();
},
);
}
},
這是 login_response_model.dart:
class LoginResponse {
dynamic? key;
List<dynamic>? non_field_errors;
LoginResponse({this.key, this.non_field_errors});
factory LoginResponse.fromJson(mapOfBody) {
return LoginResponse(
key: mapOfBody['key'],
non_field_errors: mapOfBody['non_field_errors'],
);
}
}
LoginResponseModel loginResponseJson(String str) =>
LoginResponseModel.fromJson(json.decode(str));
class LoginResponseModel {
dynamic? key;
List<dynamic>? non_field_errors;
LoginResponseModel({this.key, this.non_field_errors});
LoginResponseModel.fromJson(mapOfBody) {
key:
mapOfBody['key'];
non_field_errors:
mapOfBody['non_field_errors'];
}
Map<String, dynamic> toJson() {
final _data = <String, dynamic>{};
_data['key'] = key;
_data['non_field_errors'] = non_field_errors;
return _data;
}
}
class Data {
Data({
required this.username,
required this.email,
required this.date,
required this.id,
required this.key,
});
late final String username;
late final String email;
late final String date;
late final String id;
late final String key;
Data.fromJson(Map<String, dynamic> json) {
username = json['username'];
email = json['email'];
date = json['date'];
id = json['id'];
key = json['key'];
}
Map<String, dynamic> toJson() {
final _data = <String, dynamic>{};
_data['username'] = username;
_data['email'] = email;
_data['date'] = date;
_data['id'] = id;
_data['key'] = key;
return _data;
}
}
在我的 django 休息框架中,我得到了Bad Request: /api/dj-rest-auth/login/
我的問題:
由于沒有我要修復的特定錯誤,我想知道如何通過除錯來發現錯誤我需要一個如何嘗試和捕獲錯誤的示例。LoginRequestModel我的或有什么問題嗎LoginResponseModel
uj5u.com熱心網友回復:
通常是不匹配錯誤,請嘗試檢查以下內容
檢查您從顫動端發送的資料是否從 django 端準確接收。例如,如果后端接受這樣的資料..
{ "username" : "user", "password" : "password" }
你正在像這樣從顫振端發送資料..
{
"email" : "user",
"password" : "password"
}
它需要一個用戶名密鑰并且正在接收一封電子郵件,那么它是一個錯誤的請求
- 我不確定 django 是否區分大小寫,但將資料作為用戶名而不是用戶名發送。這會導致請求回應錯誤。
所以簡而言之,除錯這個..將您發送的資料轉換為json并查看資料是如何發送的..并從django端檢查它是如何被接收的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/529311.html
