mirror of
https://github.com/github/codeql.git
synced 2026-05-03 12:45:27 +02:00
Python: Add simple Django REST framework code
This commit is contained in:
committed by
Rasmus Wriedt Larsen
parent
9d843153d4
commit
9bbf08ddcf
1
python/ql/test/library-tests/frameworks/rest_framework/.gitignore
vendored
Normal file
1
python/ql/test/library-tests/frameworks/rest_framework/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
db.sqlite3
|
||||
@@ -1 +1,23 @@
|
||||
See README for `django-v2-v3` which described how the project was set up and how to run the development server.
|
||||
See README for `django-v2-v3` which described how the project was set up.
|
||||
|
||||
Since this test project uses models (and a DB), you generally need to run there 3 commands:
|
||||
|
||||
```
|
||||
python manage.py makemigrations
|
||||
python manage.py migrate
|
||||
python manage.py runserver
|
||||
```
|
||||
|
||||
Then visit http://127.0.0.1:8000/
|
||||
|
||||
# References
|
||||
|
||||
- https://www.django-rest-framework.org/tutorial/quickstart/
|
||||
|
||||
# Editing data
|
||||
|
||||
To edit data you should add an admin user (will prompt for password)
|
||||
|
||||
```
|
||||
python manage.py createsuperuser --email admin@example.com --username admin
|
||||
```
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
from .models import Foo, Bar
|
||||
|
||||
from django.contrib import admin
|
||||
|
||||
# Register your models here.
|
||||
|
||||
admin.site.register(Foo)
|
||||
admin.site.register(Bar)
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
# Generated by Django 3.2.8 on 2021-10-27 11:54
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
initial = True
|
||||
|
||||
dependencies = [
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Foo',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('title', models.CharField(max_length=100)),
|
||||
('field_not_displayed', models.IntegerField()),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Bar',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('n', models.IntegerField()),
|
||||
('foo', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='testapp.foo')),
|
||||
],
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,29 @@
|
||||
# Generated by Django 3.2.8 on 2021-10-27 12:06
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
def add_dummy_data(apps, schema_editor):
|
||||
Foo = apps.get_model("testapp", "Foo")
|
||||
Bar = apps.get_model("testapp", "Bar")
|
||||
|
||||
f1 = Foo(title="example 1", field_not_displayed=10)
|
||||
f1.save()
|
||||
f2 = Foo(title="example 2", field_not_displayed=20)
|
||||
f2.save()
|
||||
|
||||
b1 = Bar(n=42, foo=f1)
|
||||
b1.save()
|
||||
b2 = Bar(n=43, foo=f1)
|
||||
b2.save()
|
||||
b3 = Bar(n=1000, foo=f2)
|
||||
b3.save()
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('testapp', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(add_dummy_data),
|
||||
]
|
||||
@@ -1,3 +1,13 @@
|
||||
from django.db import models
|
||||
|
||||
# Create your models here.
|
||||
|
||||
|
||||
class Foo(models.Model):
|
||||
title = models.CharField(max_length=100)
|
||||
field_not_displayed = models.IntegerField()
|
||||
|
||||
|
||||
class Bar(models.Model):
|
||||
n = models.IntegerField()
|
||||
foo = models.ForeignKey(Foo, on_delete=models.PROTECT)
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
from .models import Foo, Bar
|
||||
from rest_framework import serializers
|
||||
|
||||
|
||||
class FooSerializer(serializers.HyperlinkedModelSerializer):
|
||||
class Meta:
|
||||
model = Foo
|
||||
fields = ["title"]
|
||||
|
||||
|
||||
class BarSerializer(serializers.HyperlinkedModelSerializer):
|
||||
class Meta:
|
||||
model = Bar
|
||||
fields = ["n", "foo"]
|
||||
@@ -1,7 +1,15 @@
|
||||
from django.urls import path
|
||||
from django.urls import path, include
|
||||
from rest_framework import routers
|
||||
|
||||
from . import views
|
||||
|
||||
|
||||
router = routers.DefaultRouter()
|
||||
router.register(r"foos", views.FooViewSet)
|
||||
router.register(r"bars", views.BarViewSet)
|
||||
|
||||
urlpatterns = [
|
||||
path("foo/", views.foo), # $routeSetup="foo/"
|
||||
path("", include(router.urls)),
|
||||
path("api-auth/", include("rest_framework.urls", namespace="rest_framework")),
|
||||
path("example/", views.example), # $routeSetup="example/"
|
||||
]
|
||||
|
||||
@@ -1,4 +1,20 @@
|
||||
from django.http import HttpResponse, HttpRequest
|
||||
from .models import Foo, Bar
|
||||
from .serializers import FooSerializer, BarSerializer
|
||||
|
||||
def foo(request: HttpRequest):
|
||||
return HttpResponse("foo")
|
||||
from rest_framework import viewsets
|
||||
|
||||
|
||||
class FooViewSet(viewsets.ModelViewSet):
|
||||
queryset = Foo.objects.all()
|
||||
serializer_class = FooSerializer
|
||||
|
||||
|
||||
class BarViewSet(viewsets.ModelViewSet):
|
||||
queryset = Bar.objects.all()
|
||||
serializer_class = BarSerializer
|
||||
|
||||
|
||||
# this is pure django
|
||||
from django.http import HttpResponse, HttpRequest
|
||||
def example(request: HttpRequest):
|
||||
return HttpResponse("example")
|
||||
|
||||
@@ -38,6 +38,7 @@ INSTALLED_APPS = [
|
||||
'django.contrib.sessions',
|
||||
'django.contrib.messages',
|
||||
'django.contrib.staticfiles',
|
||||
'rest_framework',
|
||||
]
|
||||
|
||||
MIDDLEWARE = [
|
||||
@@ -74,12 +75,12 @@ WSGI_APPLICATION = 'testproj.wsgi.application'
|
||||
# Database
|
||||
# https://docs.djangoproject.com/en/3.2/ref/settings/#databases
|
||||
|
||||
# DATABASES = {
|
||||
# 'default': {
|
||||
# 'ENGINE': 'django.db.backends.sqlite3',
|
||||
# 'NAME': BASE_DIR / 'db.sqlite3',
|
||||
# }
|
||||
# }
|
||||
DATABASES = {
|
||||
'default': {
|
||||
'ENGINE': 'django.db.backends.sqlite3',
|
||||
'NAME': BASE_DIR / 'db.sqlite3',
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
# Password validation
|
||||
|
||||
Reference in New Issue
Block a user