VUE axios get API не найден

#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’, вам следует добавить внутренний адрес