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 抓取
https://github.com/oscarsun72/TextForCtext.git Tex...
「有些事现在不做,一辈子都不会做了」~练习曲 求学时,体育老师让我们看这部电影并身体力行的带我们骑...
今天要来实作最後一个方法,也就是Heap Sort来解Sort an Array。 如果对Heap不...
有一SET物件 E 的内容有含 playerId,site,gamedate 有一段SQL sql....
前几天大概讲完了 Angular 的 Component 的基本功能与介绍,在很多例子中可以看到在 ...