При нажатии кнопки данные не передаются в Django rest api
У меня есть форма с текстовыми полями ввода, и я создал кнопку, которая при нажатии должна отправлять данные поля ввода в Django Api. Но когда я нажимаю на кнопку, ничего не происходит, и, похоже, ошибки тоже нет.
Вот пример из моего кода:
class MyForm extends StatefulWidget {
@override
_MyFormState createState() => _MyFormState();
}
class _MyFormState extends State<MyForm> {
final String url = 'http://127.0.0.1:8000/api/?format=json';
final TextEditingController nameController = TextEditingController();
final TextEditingController phoneController = TextEditingController();
final TextEditingController purposeController = TextEditingController();
final TextEditingController addressController = TextEditingController();
final TextEditingController visiteeController = TextEditingController();
final TextEditingController dateController = TextEditingController();
String result = '';
Future<void> _postDataToDjango() async {
try {
final response = await http.post(Uri.parse(url),
headers: <String, String>{
'Content-Type': 'application/json; charset=UTF-8',
},
body: jsonEncode(<String, dynamic> {
'visitor_name': nameController.text,
'visit_date': dateController.text,
'Time_in': (TimeInputField()._selectedTime).toString(),
'Time_out': Null,
'Department': (DropdownMenuExample().dropdownValue).toString(),
'Visitee_name': visiteeController.text,
'Address': addressController.text,
'Phone': phoneController.text,
'Purpose_of_visit': purposeController.text
}),
);
if (response.statusCode == 201) {
final responseData = jsonDecode(response.body);
print('Post successful');
setState(() {
result = 'id: ${responseData['id']}\nvisitor_name: ${responseData['visitor_name']}\nvisit_date: ${responseData['visit_date']}\nTime_in: ${responseData['Time_in']}\nTime_out: ${responseData['Time_out']}\nDepartment: ${responseData['Department']}\Visitee_name: ${responseData['Visitee_name']}\nAddress: ${responseData['Address']}\nPhone: ${responseData['Phone']}\nPurpose_of_visit: ${responseData['Purpose_of_visit']}';
});
} else {
throw Exception('Failed to submit');
}
}
catch (e) {
setState(() {
result = 'Error: $e';
});
}
}
А ниже показана кнопка, созданная с помощью действия onPressed:
child: ElevatedButton(
style: ElevatedButton.styleFrom(
backgroundColor: Colors.blue,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(4)),
),
onPressed: _postDataToDjango,
child: const Padding(
padding: EdgeInsets.all(10.0),
child: Text(
'Submit',
style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold, color: Colors.black),
),
),
),
Я пытался проверить, нет ли чего-то неправильного в url, и добавил заголовок к телу, но ничего не происходит.