Qiita Conference 2025

Qiita史上最多!豪華12名のゲストが登壇

特別講演ゲスト(敬称略)

ymrl、成瀬允宣、鹿野壮、伊藤淳一、uhyo、徳丸浩、ミノ駆動、みのるん、桜庭洋之、tenntenn、けんちょん、こにふぁー

1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

DjangoとReactでAPI疎通確認をしたらめちゃくちゃ沼った件

Posted at

やりたいこと

バックエンドをDjango、フロントエンドをReactで構成
DjangoでAPIを作成してReactに渡して表示させたい

DjangoでAPIを作って表示させるところまでは動作確認済み

問題点

404エラーが頻発
image.png

開発者ツールで確認すると
image.png

と、本来はRequest URLがDjangoなので[http://localhost:8000/api/hello/backend/]にならないといけない

解決までやったこと

urls.pyの修正

本来[backend/]とならないといけないのだが、/が読み込まれないので、urls.pyを修正

urls.py
from django.urls import path
from . import views

#app_name = 'app.hello'

urlpatterns = [
    path('backend', views.Backend.as_view()),
]

しかし結果は変わらず

CORS の導入

CORS (オリジン間リソース共有、 Cross-Origin Resource Sharing)
つまり今回の場合はDjangoはポート8000でReactは3000でポートが違うので、ブラウザがオリジンをまたぐ。
それを許可する設定を導入

pip install django-cors-headers
settings.py
INSTALLED_APPS = [
    # ...
    'corsheaders',
    # ...
]

MIDDLEWARE = [
    # ほかのミドルウェアより上に記載
    'corsheaders.middleware.CorsMiddleware',
    # ...
]

CORS_ALLOWED_ORIGINS = [
    "http://localhost:3000",
]

これでも404エラーは解決できず

page.tsxのパスを絶対パスに変更

page.tsx
'use client'

import axios from 'axios'
import { useEffect, useState } from "react"

export default function Page() {
    const [ data, setData ] = useState({ message: ''})

    useEffect(() => {
        axios.get('http://localhost:8000/api/hello/backend/')
            .then((res) => res.data)
            .then((data) => {
                console.log(data); // データをログに出力
                setData(data)
            })
    }, [])

    return <div>hello {data.message}!</div>
}

axos.getのパスを絶対パスに変更

結果

image.png

image.png

image.png

課題

そもそも絶対パスがマジでいけてないと思っている
特にポート番号込みで記載というのは本当に大丈夫か?
相対パスで書きたいのだが....

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up

Qiita Conference 2025 will be held!: 4/23(wed) - 4/25(Fri)

Qiita Conference is the largest tech conference in Qiita!

Keynote Speaker

ymrl、Masanobu Naruse, Takeshi Kano, Junichi Ito, uhyo, Hiroshi Tokumaru, MinoDriven, Minorun, Hiroyuki Sakuraba, tenntenn, drken, konifar

View event details
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?