У меня есть приложение Vue + Django. Я пытаюсь отправить некоторые данные из vue в базу данных, используя метод axios post. К сожалению, консоль показывает ошибку:
GET http://localhost:8080/api/get_data/ 404 (Not Found)
И то же самое произошло в консоли Python:
Not Found: /get_data/
У меня есть функция get_data, определенная в моих представлениях, и я добавил путь к URL-адресам:
path('get_data/', views.get_data)
Во фронтенде это выглядит так:
addNewData() {
axios.post("/api/get_data/", this.componentData.data).then(response => {
console.info("ok");
});
}
Я что-то пропустил?
Это все еще дает мне ту же ошибку
Django работает как порт 8000 по умолчанию, а не 8080






axios.post("/api/get_data/" — этот URL относится к «текущему». Вот почему он пытается получить доступ http://localhost:8080/..., где 8080 — это порт приложения VUE. Принимая во внимание, что приложение Django по умолчанию работает на 8000.
Вы должны использовать абсолютные URL-адреса для доступа к одному приложению из другого: для доступа к API приложения Django из приложения Vue.
Используйте другой config/env.var в своем приложении VUE, чтобы ссылаться на серверный API в режимах отладки (localhost) и prod (доменное имя + http/https), например:
axios.post(conf.BACKEND_URL + "/api/get_data/")
в вашем случае в режиме отладки должно быть (расширено):
axios.post("http://localhost:8000/api/get_data/")
если вы не использовали webpack proxyTable для работы с '/api', вы должны добавить внутренний адрес
В urls.py вы указали
get_data/, но пытаясь получить доступ к/api/get_data/, вы должны изменить его на любой формат.