Как добавить в Django Rest фреймворк
В настоящее время у меня есть следующее:
backend/urls.py
from django.contrib import admin
from django.db import router
from django.urls import path, re_path, include
from pages import views
from rest_framework import routers
from reactUI import reactViews
router = routers.DefaultRouter()
router.register(r'reactCluster',reactViews.reactUIClusterView,'reactUI')
urlpatterns = [
path('admin/', admin.site.urls),
path('', views.homeView, name='home'),
re_path(r'^getdata/',views.homeView),
re_path(r'^loadAPI/',views.loadAPI),
path('api/', include(router.urls)),
]
backend/reactUI/reactViews.py
from django import views
from django.shortcuts import render
from rest_framework import viewsets
from .serializers import reactUIClusterSerializer
from .models import reactUICluster
# Create your views here.
class reactUIClusterView(viewsets.ModelViewSet):
serializer_class = reactUIClusterSerializer
queryset = reactUICluster.objects.all()
#helps with crud ops
backend/reactUI/models.py
from django.db import models
from pandas import describe_option
class reactUICluster(models.Model):
title = models.CharField(max_length=200)
physicalCPU = models.IntegerField()
virtualCPU = models.IntegerField()
#maybe add a list feild in cluster class
def __str__(self) -> str:
return self.title
backend/reactUI/serializers/py
from rest_framework import serializers
from .models import reactUICluster
class reactUIClusterSerializer(serializers.ModelSerializer):
class Meta:
model = reactUICluster
fields = ('id', 'title', 'physicalCPU', 'virtualCPU')
Передняя часть в react
import React, { Component, useState } from "react";
~bunch of random other imports
let counter = 0;
function RefreshList() {
const [row, setRow] = useState([])
const payload = {
title :'a',
physicalCPU:'b',
virtualCPU:'c'
}
const axiosPost = () => {
axios.post("http://localhost:8000/api/reactCluster/",payload).catch((err) => console.log(err))
}
const axiomCall = () => {
console.log("FF");
axios
.get("http://localhost:8000/api/reactCluster/")
.then((res) =>{setRow(res.data);})
.catch((err) => console.log(err));
for (var i = 0; i<row.length; i++){
console.log(row[i]);
}
//console.log(row)
//console.log("EOF ")
};
console.log(counter)
if (row.length==0){
counter = 2;
axiomCall();
axiosPost();
}else{
}
return(
<div>
<TableContainer>
<Table sx={{ minWidth: 200 }} size="small" aria-label="a dense table">
<TableHead>
<TableRow>
<TableCell>Clusters</TableCell>
<TableCell align="right">pCPU Number</TableCell>
<TableCell align="right">vCPU Number</TableCell>
<TableCell align="right">virt to phys ratio</TableCell>
</TableRow>
</TableHead>
<TableBody>
{row.map((r) => (
<TableRow
key={r.name}
sx={{ '&:last-child td, &:last-child th': { border: 0 } }}
>
<TableCell component="th" scope="row">{r.title}</TableCell>
<TableCell align="right">{r.physicalCPU}</TableCell>
<TableCell align="right">{r.virtualCPU}</TableCell>
<TableCell align="right">{r.virtualCPU/r.physicalCPU}</TableCell>
</TableRow>
))}
</TableBody>
</Table>
</TableContainer>
</div>
)
};
export default RefreshList;
Теперь, если я попытаюсь вызвать метод axiosPost(), он фактически не будет обновлять ничего внутри значений django rest framework
Более того, у меня есть много данных, которые находятся в базе данных SQL. Я думал сделать вызов API с фронт-энда, чтобы бэкэнд добавлял элементы в REST-фреймворк, получая значения из базы данных SQL, делая это, когда мы загружаем сайт, он будет показывать все, что находится в базе данных SQL