Skip to content

Commit

Permalink
[add] #25 djangoからREST FrameWorkを取得出来るようにした フロント側でDBの情報を取得するため
Browse files Browse the repository at this point in the history
  • Loading branch information
Jastin-Infj committed Jun 7, 2023
1 parent 6a2fda9 commit 79d90b7
Show file tree
Hide file tree
Showing 12 changed files with 115 additions and 4 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@ yarn.lock
# Build
dist
node_modules

src/backend/static/*.html
src/backend/static/*.js

###################
## backend
Expand Down
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
"webpack-dev-server": "^4.15.0"
},
"dependencies": {
"axios": "^1.4.0",
"react": "^18.2.0",
"react-dom": "^18.2.0"
},
Expand Down
3 changes: 3 additions & 0 deletions src/backend/ServerSide/admin.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
from django.contrib import admin
from .models import User

# Register your models here.

admin.site.register(User)
7 changes: 7 additions & 0 deletions src/backend/ServerSide/serializers.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
from rest_framework import serializers
from .models import User

class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('id','name','age')
9 changes: 8 additions & 1 deletion src/backend/ServerSide/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@

from django.urls import reverse_lazy

from rest_framework import viewsets
from .serializers import UserSerializer

from .models import User

# Create your views here.
Expand All @@ -16,4 +19,8 @@ class User_Create(CreateView):
model = User
fields = ['name','age']

success_url = reverse_lazy('ServerSide:home')
success_url = reverse_lazy('ServerSide:home')

class UserView(viewsets.ModelViewSet):
serializer_class = UserSerializer
queryset = User.objects.all()
8 changes: 8 additions & 0 deletions src/backend/djangoEnv/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,19 +44,27 @@
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'corsheaders',
'ServerSide',
]

MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
"corsheaders.middleware.CorsMiddleware",
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

# リクエストの許可
CORS_ALLOWED_ORIGINS = [
'http://localhost:8080'
]

ROOT_URLCONF = 'djangoEnv.urls'

TEMPLATES = [
Expand Down
10 changes: 9 additions & 1 deletion src/backend/djangoEnv/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,20 @@
"""
from django.contrib import admin
from django.urls import path , include

from django.conf import settings
from django.conf.urls.static import static

from rest_framework import routers
from ServerSide import views

router = routers.DefaultRouter()
router.register(r'users',views.UserView,'ServerSide')

urlpatterns = [
path('admin/', admin.site.urls),
path('django/', include('ServerSide.urls'))
path('django/', include('ServerSide.urls')),
path('api/',include(router.urls)),
]

urlpatterns += static(settings.STATIC_URL , document_root=settings.STATICFILES_DIRS)
6 changes: 5 additions & 1 deletion src/frontend/js/components/App.jsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
import Listget from "./Listget";

import { ENDPOINT_URL } from "../index";

const App = () => {
return (
<>
<div>Hello React App!!</div>
<Listget url={ENDPOINT_URL}/>
</>
);
};
Expand Down
47 changes: 47 additions & 0 deletions src/frontend/js/components/Listget.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
import { useState , useEffect } from "react";
import axios from 'axios';

import messages from '../../json/Message.json'

const Listget = ({url}) => {
let fetched = false;
let [jsonfetchDatas,FetchResponse] = useState([])

useEffect(() => {
axios.get(url).then((res) => {
FetchResponse(res.data);
fetched = true;
});
},[]);

const Success = ({datas}) => {
return (
<ul>
{datas.map((data) => {
return (
<li key={data.id}>
<div>
<span>id: {data.id}</span>
</div>
<div>
<span>name: {data.name}</span>
</div>
<div>
<span>age: {data.age}</span>
</div>
</li>
);
})}
</ul>
);
};

return (
<>
{!fetched && <div>{messages.Server.BackendFetchError["01"]}</div>}
{ fetched && <Success datas={jsonfetchDatas}/> }
</>
);
};

export default Listget;
2 changes: 2 additions & 0 deletions src/frontend/js/index.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ import { createRoot } from 'react-dom/client';

import App from "./components/App";

export const ENDPOINT_URL = 'http://localhost:8000/api/users/'

const rootEl = document.querySelector("#root");
const root = createRoot(rootEl);
root.render(
Expand Down
7 changes: 7 additions & 0 deletions src/frontend/json/Message.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"Server": {
"BackendFetchError": {
"01": "バックエンドのサーバーを起動してください"
}
}
}
16 changes: 16 additions & 0 deletions src/frontend/json/testdata.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"datas": [
{
"data": 1,
"id": 1
},
{
"data": 2,
"id": 5
},
{
"data": 4,
"id": 5
}
]
}

0 comments on commit 79d90b7

Please sign in to comment.