26
loading...
This website collects cookies to deliver better user experience
GET https://www.myblog.com/posts
python3 --version
# Python 3.9.6
mkdir myblog
cd myblog
python3 -m venv env
source env/bin/activate
desactivate
pip install django
pip install djangorestframework
django-admin startproject config .
djangoadmin startapp posts
# config/settings/py
INSTALLED_APPS = [
...
...
'rest_framework',
'rest_framework.authtoken',
'posts',
]
# posts/models.py
from django.db import models
from django.contrib.auth import get_user_model
User = get_user_model()
class Post(models.Model):
title = models.CharField(max_length=255)
body = models.TextField()
created_on = models.DateTimeField(auto_now_add=True)
user = models.ForeignKey(User, on_delete=models.CASCADE)
$ python manage.py makemigrations
$ python manage.py migrate
$ python manage.py createsuperuser
# posts/admin.py
from django.contrib import admin
from posts import models
admin.site.register(models.Post)
$ python manage.py runserver
# posts/serializers.py
from rest_framework import serializers
from .models import Post
class PostSerializer(serializers.ModelSerializer):
class Meta:
model = Post
fields = '__all__'
fields = ['title', 'body']
from rest_framework import viewsets
from .models import Post
from .serializers import PostSerializer
class PostViewSet(viewsets.ModelViewSet):
serializer_class = PostSerializer
queryset = Post.objects.all()
# posts/urls.py
from django.urls import path, include
from rest_framework.routers import DefaultRouter
from .views import PostViewSet
router = DefaultRouter()
router.register('posts', PostViewSet, 'post')
urlpatterns = [
path('', include(router.urls)),
]
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('api/', include('posts.urls')),
]
$ python manage.py runserver