[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 = TrueALLOWED_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 adminfrom django.urls import path, includeurlpatterns = [    path('admin/', admin.site.urls),    # 开条路给 api APP    path('', include('api.urls')), ]

NOTES/api/models.py

from django.db import modelsclass 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 adminfrom .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 modelsfrom rest_framework.serializers import ModelSerializerfrom .models import Noteclass NoteSerializer(ModelSerializer):    class Meta:        model = Note        fields = '__all__'

NOTES/api/urls.py

from django.urls import pathfrom . import viewsurlpatterns = [    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 JsonResponsefrom rest_framework.decorators import api_viewfrom rest_framework.response import Responsefrom .serializers import NoteSerializerfrom .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


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章