#python #django #vue.js #axios
#python #django #vue.js #axios
Вопрос:
У меня есть приложение 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.log("ok");
});
}
Я что-то пропустил?
Комментарии:
1. В URL-адресах. py, который вы указали,
get_data/
но пытаетесь получить доступ/api/get_data/
, вы должны изменить его на любой формат.2. Это все еще выдает мне ту же ошибку
3. Django запускается как порт
8000
, по умолчанию не на8080
Ответ №1:
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/")
Ответ №2:
если вы не используете webpack proxyTable для обработки ‘/api’, вам следует добавить внутренний адрес