Felhasználói eszközök

Eszközök a webhelyen


oktatas:web:back-end_framework:django:rest_api_kezdes

Különbségek

A kiválasztott változat és az aktuális verzió közötti különbségek a következők.

Összehasonlító nézet linkje

Előző változat mindkét oldalonElőző változat
oktatas:web:back-end_framework:django:rest_api_kezdes [2024/01/13 17:44] – [Bevezetés] adminoktatas:web:back-end_framework:django:rest_api_kezdes [2024/01/13 17:45] (aktuális) – eltávolítva admin
Sor 1: Sor 1:
-[[oktatas:web:back-end_framework:django|< Django]] 
- 
-====== Django REST API kezdés ====== 
- 
-  * **Szerző:** Sallai András 
-  * Copyright (c) 2024, Sallai András 
-  * Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC BY-SA 4.0]] 
-  * Web: https://szit.hu 
- 
-===== Bevezetés ===== 
- 
- 
- 
-  * https://www.django-rest-framework.org/ 
-===== Projekt létrehozása ===== 
- 
-Hozzuk létre a projekt könyvtárat és lépjünk be. 
- 
-  mkdir emp 
-  cd emp 
- 
- 
-  python3 -m venv .venv 
- 
- 
-Aktiváljuk a környezetet: 
- 
-MacOS és Linuxon: 
-  source .venv/bin/active 
- 
-Windowson: 
-  .\venv\Scripts\activate 
- 
-Ellenőrizzük a jelenlegi függőségeket: 
-  pip freeze 
- 
-Indítsunk VSCode-t: 
-  code . 
- 
-Hozzuk létre a requirements.txt fájlt. Tartalma: 
- 
-<code txt requirements.txt> 
-django>=4.0.0,<4.1.0 
-djangorestframework 
-pyyaml 
-requests 
-django-cors-headers 
-</code> 
- 
-Telepítsük a függőségeket: 
-  pip install -r requirements.txt 
- 
-Hozzuk létre két könyvtárat: 
- 
-<code> 
-emp/ 
-  |-backend/ 
-  |-py_client/ 
-</code> 
- 
-===== Főrész ===== 
- 
-  django-admin startproject emp . 
- 
-===== Indítás ===== 
- 
-Lesz egy manage.py fájl, ami Python scripteket tartalmaz a projekt kezelésére. 
-A szerver indítása: 
- 
-  python manage.py runserver 
- 
-  * http://localhost:8000/ 
- 
-Az alapvető adatbázis elkészítése: 
- 
-  python manage.py migrate 
- 
-===== Admin felület ===== 
- 
-Nézzük meg az adminisztrációs felületet: 
- 
-  * http://127.0.0.1:8000/admin 
- 
-Létre kell hoznunk egy felhasználót. Parancssorban: 
-  python manage.py createsuperuser 
- 
- 
-A kimenet ehhez hasonló lehet: 
- 
-<code> 
-python manage.py createsuperuser 
-Username (leave blank to use 'andras'): admin 
-Email address: admin@zold.lan 
-Password:  
-Password (again):  
-This password is too short. It must contain at least 8 characters. 
-Bypass password validation and create user anyway? [y/N]: y 
-Superuser created successfully. 
-</code> 
- 
-Lépjünk be. 
- 
-===== Modell létrehozása ===== 
-Hozza létre a models.py fájlt: 
- 
-<code python emp/models.py> 
-from django.db import models 
- 
-class Employee(models.Model): 
-    name = models.CharField(max_length=50) 
-    city = models.CharField(max_length=50) 
-    salary = models.FloatField() 
-</code> 
- 
- 
-Regisztráljuk a settings.py fájlban a modellt: 
- 
- 
- 
-Vegyük fel a tömb végére az employees mint alkalmazást: 
-<code python settings.py> 
-# ... 
-# Application definition 
- 
-INSTALLED_APPS = [ 
-    'django.contrib.admin', 
-    'django.contrib.auth', 
-    'django.contrib.contenttypes', 
-    'django.contrib.sessions', 
-    'django.contrib.messages', 
-    'django.contrib.staticfiles', 
-    'emp', 
-] 
- 
-# ... 
-</code> 
- 
-Készítsünk migrációt: 
-  python3 manage.py makemigrations emp 
- 
-Migráljunk: 
-  python3 manage.py migrate 
- 
-===== Modell az adminfelületre ===== 
- 
-Kössük be a modellt az admin felületre: 
- 
-<code python emp/admin.py> 
-from django.contrib import admin 
-from .models import Employee 
- 
-admin.site.register(Employee) 
-</code> 
- 
-Indítsuk újra a szervert, majd nézzük meg az admin felületet, a böngészőlap újratöltésével. 
- 
-  * http://127.0.0.1:8000/admin/ 
- 
-Vegyünk fel két új dolgozót. 
-==== A __str__ felülírása ==== 
- 
-<code python emp/models.py> 
-from django.db import models 
- 
-class Employee(models.Model): 
-    name = models.CharField(max_length=50) 
-    city = models.CharField(max_length=50) 
-    salary = models.FloatField() 
- 
-    def __str__(self): 
-        return self.name 
-</code> 
- 
-Nézzük meg újból az admin felületen a dolgozókat, az oldal frissítésével: 
-  * http://127.0.0.1:8000/admin/ 
- 
-===== REST framework használata ===== 
-==== Szeriálizálás ==== 
- 
-Készítsünk egy az emp könyvtárban egy serializers.py fájlt, a következő tartalommal: 
- 
-<code python emp/serializers.py> 
-from rest_framework import serializers 
-from .models import Employee 
- 
-class EmployeeSerializer(serializers.ModelSerializer): 
-    class Meta: 
-        model = Employee 
-        fields = ['id', 'name', 'city', 'salary'] 
- 
-</code> 
- 
-==== Nézet ==== 
- 
-Készítsünk az emp könyvtárban egy views.py fájlt: 
- 
-<code python emp/views.py> 
-from django.http import JsonResponse 
-from .models import Employee 
-from .serializers import EmployeeSerializer 
- 
-def read_employees(request): 
-    employees = Employee.objects.all() 
-    serializer = EmployeeSerializer(employees, many=True) 
-    return JsonResponse(serializer.data, safe=False) 
- 
-</code> 
- 
-==== Útvonal ==== 
- 
-<code python emp/urls.py> 
-from django.contrib import admin 
-from django.urls import path 
-from .views import read_employees 
- 
-urlpatterns = [ 
-    path('admin/', admin.site.urls), 
-    path('employees', read_employees), 
-] 
- 
-</code> 
- 
-===== Read és Create ===== 
- 
-<code python emp/views.py> 
-from django.http import JsonResponse 
-from .models import Employee 
-from .serializers import EmployeeSerializer 
-from rest_framework.decorators import api_view 
-from rest_framework.response import Response 
-from rest_framework import status 
- 
-@api_view(['GET', 'POST']) 
-def read_create_employees(request): 
-    if request.method == 'GET': 
-        employees = Employee.objects.all() 
-        serializer = EmployeeSerializer(employees, many=True) 
-        return JsonResponse(serializer.data, safe=False) 
- 
-    if request.method == 'POST': 
-        serializer = EmployeeSerializer(data=request.data) 
-        if serializer.is_valid(): 
-            serializer.save() 
-            return Response(serializer.data, status=status.HTTP_201_CREATED) 
- 
-</code> 
- 
-<code python emp/urls.py> 
-from django.contrib import admin 
-from django.urls import path 
-from .views import read_create_employees 
- 
-urlpatterns = [ 
-    path('admin/', admin.site.urls), 
-    path('employees', read_create_employees), 
-] 
- 
-</code> 
- 
-===== CRUD műveletek ===== 
- 
-<code python emp/views.py> 
-from django.http import JsonResponse 
-from .models import Employee 
-from .serializers import EmployeeSerializer 
-from rest_framework.decorators import api_view 
-from rest_framework.response import Response 
-from rest_framework import status 
- 
-@api_view(['GET', 'POST']) 
-def read_create_employees(request): 
-    if request.method == 'GET': 
-        employees = Employee.objects.all() 
-        serializer = EmployeeSerializer(employees, many=True) 
-        return JsonResponse(serializer.data, safe=False) 
- 
-    if request.method == 'POST': 
-        serializer = EmployeeSerializer(data=request.data) 
-        if serializer.is_valid(): 
-            serializer.save() 
-            return Response(serializer.data, status=status.HTTP_201_CREATED) 
- 
-@api_view(['GET', 'PUT', 'DELETE']) 
-def detail_employee(request, id): 
-    try: 
-        employee = Employee.objects.get(pk=id) 
-    except Employee.DoesNotExist: 
-        return Response(status=status.HTTP_404_NOT_FOUND) 
-     
-    if request.method == 'GET': 
-        serializer = EmployeeSerializer(employee) 
-        return Response(serializer.data) 
-     
-    elif request.method == 'PUT': 
-        serializer = EmployeeSerializer(employee, data=request.data) 
-        if serializer.is_valid(): 
-            serializer.save() 
-            return Response(serializer.data) 
-        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) 
-       
-    elif request.method == 'DELETE': 
-        affected = employee.delete() 
-        return Response(affected,status=status.HTTP_200_OK) 
- 
-</code> 
- 
-<code python emp/urls.py> 
-from django.contrib import admin 
-from django.urls import path 
-from emp import views 
- 
-urlpatterns = [ 
-    path('admin/', admin.site.urls), 
-    path('employees', views.read_create_employees), 
-    path('employees/<int:id>', views.detail_employee), 
-] 
- 
-</code> 
- 
  
oktatas/web/back-end_framework/django/rest_api_kezdes.1705164242.txt.gz · Utolsó módosítás: 2024/01/13 17:44 szerkesztette: admin