[Flutter ] 为Flutter 建立 Django 资料库

version:
python 3.8.3
django 3.2.4

建立名为 NOTES,APP名为 api 的 Django 专案
Django

Django REST framework

其安装 rest_framework、corsheaders,程序码设置如下:
(给Flutter资料库为目的,分享 python 的资料满地都是,在此不多做详注)
NOTES/notes/settings.py

DEBUG = True
ALLOWED_HOSTS = [
    'http://127.0.0.1:8000', #
    'localhost', 
    '127.0.0.1', 
    '172.20.10.4', # 在 terminal 输入 ipconfig 查电脑 IPv4 位址
]

INSTALLED_APPS = [
    ...
    'api.apps.ApiConfig',
    'rest_framework',
    'corsheaders',
]

MIDDLEWARE = [
    ...
    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.common.CommonMiddleware',
    ...
]

# 先不求甚解,全给他开通
CORS_ALLOW_ALL_ORIGINS = True

NOTES/notes/url.py

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    # 开条路给 api APP
    path('', include('api.urls')), 
]

NOTES/api/models.py

from django.db import models

class Note(models.Model):
    title = models.TextField()
    body = models.TextField()
    updated = models.DateField(auto_now=True)
    created = models.DateField(auto_now_add=True)

    class Meta:
        ordering = ['-updated']

NOTES/api/admin.py

from django.contrib import admin
from .models import Note
#admin.site.register(Note)
@admin.register(Note)
class BlogTypeDocument(admin.ModelAdmin):
    list_per_page = 10
    list_display = ('title', 'body')

NOTES/api/serializers.py

from django.db import models
from rest_framework.serializers import ModelSerializer
from .models import Note

class NoteSerializer(ModelSerializer):
    class Meta:
        model = Note
        fields = '__all__'

NOTES/api/urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('', views.getRoutes),
    path('notes/', views.getNotes),
    path('notes/create/', views.createNote),
    path('notes/<str:pk>/update/', views.updateNote),
    path('notes/<str:pk>/delete/', views.deleteNote),
    path('notes/<str:pk>/', views.getNote),
]

NOTES/api/views.py

from django.http import JsonResponse
from rest_framework.decorators import api_view
from rest_framework.response import Response
from .serializers import NoteSerializer
from .models import Note

@api_view(['GET'])
def getRoutes(reqyest):
    routes = [
        {
            'Endpoint' : '/notes/',
            'mothod' : 'GET',
            'body' : None,
        },
        {
            'Endpoint' : '/notes/id',
            'mothod' : 'GET',
            'body' : None,
        },
        {
            'Endpoint' : '/notes/create/',
            'mothod' : 'POST',
            'body' : None,
        },
        {
            'Endpoint' : '/notes/update/',
            'mothod' : 'PUT',
            'body' : {'body':""},
        },
        {
            'Endpoint' : '/notes/delete/',
            'mothod' : 'DELETE',
            'body' : None,
        },
    ]

    #return JsonResponse(routes, safe=False)
    return Response(routes)

@api_view(['GET'])
def getNotes(request):
    notes = Note.objects.all()
    serializer = NoteSerializer(notes, many=True)
    return Response(serializer.data)

@api_view(['GET'])
def getNote(request, pk):
    note = Note.objects.get(id=pk)
    serializer = NoteSerializer(note, many=False)
    return Response(serializer.data)

@api_view(['POST'])
def createNote(request):
    data = request.data

    note = Note.objects.create(
        body=data['body']
    )
    serializers = NoteSerializer(note, many=False)
    return Response(serializers.data)

@api_view(['PUT'])
def updateNote(request, pk):
    data = request.data

    note = Note.objects.get(id=pk)
    serializers = NoteSerializer(note, data=request.Post)
    if serializers.is_valid():
        serializers.save()
    return Response(serializers.data)

@api_view(['DELETE'])
def deleteNote(request, pk):

    note = Note.objects.get(id=pk)
    note.delete()
    return Response("Note was deleted")

以上完成後开启 runserver
进入 NOTES 输入一些资料以便 flutter 呈现

python manage.py runserver 0.0.0.0:8000

接续: Django 为资料库,以 FutureBuilder + http 抓取

注: 小白自学,欢迎评论指导!
参考资料:
https://stackoverflow.com/questions/59700218/run-django-app-through-ip-address-allowed-host


<<:  Mikrotik RouterOS从入门到实战系列-Mikrotik入门第六课

>>:  [Flutter ] Django 为资料库,以 FutureBuilder + http 抓取

2.1 Design System - 制作的工具

「有些事现在不做,一辈子都不会做了」~练习曲 求学时,体育老师让我们看这部电影并身体力行的带我们骑...

Day 29 : 堆积排序 Heap Sort

今天要来实作最後一个方法,也就是Heap Sort来解Sort an Array。 如果对Heap不...

set<E> 选出所有 E 第一个元素 java

有一SET物件 E 的内容有含 playerId,site,gamedate 有一段SQL sql....

[Angular] Day8. Templates and Text interpolation

前几天大概讲完了 Angular 的 Component 的基本功能与介绍,在很多例子中可以看到在 ...