Creative Code

Aurora-(3)django, pynecone 연동예제코드 본문

Projects

Aurora-(3)django, pynecone 연동예제코드

빛하루 2023. 11. 2. 22:32

※django 내부 코드

# Django API 설정 (Django 앱 내부)
# myapp/models.py
from django.db import models

class MyModel(models.Model):
    field1 = models.CharField(max_length=100)
    field2 = models.TextField()

# myapp/serializers.py
from rest_framework import serializers
from .models import MyModel

class MyModelSerializer(serializers.ModelSerializer):
    class Meta:
        model = MyModel
        fields = '__all__'

# myapp/views.py
from rest_framework import generics
from .models import MyModel
from .serializers import MyModelSerializer

class MyModelListCreate(generics.ListCreateAPIView):
    queryset = MyModel.objects.all()
    serializer_class = MyModelSerializer

# myapp/urls.py
from django.urls import path
from .views import MyModelListCreate

urlpatterns = [
    path('api/mymodel/', MyModelListCreate.as_view(), name='mymodel-list-create'),
]

# 프로젝트의 urls.py (myproject/urls.py)
from django.contrib import admin
from django.urls import include, path

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

 

※pynecone 내부 코드

import requests
from pynecone import pc, h

api_endpoint = 'http://localhost:8000/api/mymodel/'  # Django API 엔드포인트 URL

class MyApp(pc.Component):
    def __init__(self):
        super().__init__()
        self.state.data = []

    def on_mount(self):
        # Django API에서 데이터를 가져오는 GET 요청
        response = requests.get(api_endpoint)
        if response.status_code == 200:
            self.state.data = response.json()

    def render(self):
        return (
            h.div(
                h.h1('Data from Django API'),
                h.ul([h.li(item['field1']) for item in self.state.data])
            )
        )

app = pc.app(MyApp)

if __name__ == '__main__':
    app.start()