adds model serializer and urls for interacting with api
This commit is contained in:
parent
49e70f3a40
commit
1e8647d478
|
@ -0,0 +1,20 @@
|
|||
asgiref==3.5.2
|
||||
certifi==2022.6.15
|
||||
charset-normalizer==2.1.0
|
||||
colorama==0.4.5
|
||||
commonmark==0.9.1
|
||||
defusedxml==0.7.1
|
||||
Django==4.1
|
||||
djangorestframework==3.13.1
|
||||
httpie==3.2.1
|
||||
idna==3.3
|
||||
multidict==6.0.2
|
||||
Pygments==2.12.0
|
||||
PySocks==1.7.1
|
||||
pytz==2022.1
|
||||
requests==2.28.1
|
||||
requests-toolbelt==0.9.1
|
||||
rich==12.5.1
|
||||
sqlparse==0.4.2
|
||||
tzdata==2022.1
|
||||
urllib3==1.26.11
|
|
@ -1,13 +1,10 @@
|
|||
from rest_framework import serializers
|
||||
from snippets.models import Snippet, LANG_CHOICES, STYLE_CHOICES
|
||||
|
||||
class SnippetSerializer(serializers.Serializer):
|
||||
id = serializers.IntegerField(read_only=True)
|
||||
title = serializers.CharField(required=False, allow_blank=True, max_length=100)
|
||||
code = serializers.CharField(style={"base_template", "textarea.html"})
|
||||
line_numbers = serializers.BooleanField()
|
||||
language = serializers.ChoiceField(choices=LANG_CHOICES, default="python")
|
||||
style = serializers.ChoiceField(choices=STYLE_CHOICES, default="friendly")
|
||||
class SnippetSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Snippet
|
||||
fields = ["id", "title", "code", "language", "line_numbers", "style"]
|
||||
|
||||
def create(self, validated_data):
|
||||
return Snippet.objects.create(**validated_data)
|
||||
|
@ -20,6 +17,7 @@ class SnippetSerializer(serializers.Serializer):
|
|||
instance.style = validated_data.get("style", instance.style)
|
||||
instance.save()
|
||||
|
||||
|
||||
return instance
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
from django.urls import path
|
||||
from snippets import views
|
||||
|
||||
urlpatterns = [
|
||||
path("snippets/", views.snippet_list),
|
||||
path("snippets/<int:pk>/", views.snippet_detail)
|
||||
]
|
|
@ -1,3 +1,46 @@
|
|||
from django.shortcuts import render
|
||||
from django.http import HttpResponse, JsonResponse
|
||||
from django.views.decorators.csrf import csrf_exempt
|
||||
from rest_framework.parsers import JSONParser
|
||||
from snippets.models import Snippet
|
||||
from snippets.serializers import SnippetSerializer
|
||||
|
||||
# Create your views here.
|
||||
@csrf_exempt
|
||||
def snippet_list(request):
|
||||
|
||||
if request.method == "GET":
|
||||
snippets = Snippet.objects.all()
|
||||
serializer = SnippetSerializer(snippets, many=True)
|
||||
return JsonResponse(data=serializer.data, safe=False)
|
||||
|
||||
elif request.method == "POST":
|
||||
data = JSONParser().parse(request)
|
||||
serializer = SnippetSerializer(data=data)
|
||||
if serializer.is_valid():
|
||||
serializer.save()
|
||||
return JsonResponse(serializer.data, status=201)
|
||||
return JsonResponse(serializer.errors, status=400)
|
||||
|
||||
|
||||
@csrf_exempt
|
||||
def snippet_detail(request, pk):
|
||||
|
||||
try:
|
||||
snippet = Snippet.objects.get(pk=pk)
|
||||
except Snippet.DoesNotExist:
|
||||
return HttpResponse(status=404)
|
||||
|
||||
if request.method == "GET":
|
||||
serializer = SnippetSerializer(snippet)
|
||||
return JsonResponse(data=serializer.data)
|
||||
|
||||
elif request.method == "PUT":
|
||||
data = JSONParser().parse(request)
|
||||
serializer = SnippetSerializer(snippet, data=data)
|
||||
if serializer.is_valid():
|
||||
serializer.save()
|
||||
return JsonResponse(serializer.data)
|
||||
return JsonResponse(serializer.errors, status=400)
|
||||
|
||||
elif request.method == "DELETE":
|
||||
snippet.delete()
|
||||
return HttpResponse(status=204)
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"folders":
|
||||
[
|
||||
{
|
||||
"path": "."
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,184 @@
|
|||
{
|
||||
"auto_complete":
|
||||
{
|
||||
"selected_items":
|
||||
[
|
||||
]
|
||||
},
|
||||
"build_system": "",
|
||||
"build_system_choices":
|
||||
[
|
||||
],
|
||||
"build_varint": "",
|
||||
"command_palette":
|
||||
{
|
||||
"height": 0.0,
|
||||
"last_filter": "",
|
||||
"selected_items":
|
||||
[
|
||||
[
|
||||
"index",
|
||||
"Help: Indexing Status"
|
||||
],
|
||||
[
|
||||
"settings",
|
||||
"Preferences: Settings"
|
||||
],
|
||||
[
|
||||
"theme",
|
||||
"UI: Select Theme"
|
||||
],
|
||||
[
|
||||
"install",
|
||||
"Package Control: Install Package"
|
||||
],
|
||||
[
|
||||
"select col",
|
||||
"UI: Select Color Scheme"
|
||||
],
|
||||
[
|
||||
"color",
|
||||
"UI: Select Color Scheme"
|
||||
],
|
||||
[
|
||||
"c++",
|
||||
"Set Syntax: C++"
|
||||
],
|
||||
[
|
||||
"set syntx: c++",
|
||||
"Set Syntax: C++"
|
||||
],
|
||||
[
|
||||
"select color",
|
||||
"UI: Select Color Scheme"
|
||||
]
|
||||
],
|
||||
"width": 0.0
|
||||
},
|
||||
"console":
|
||||
{
|
||||
"height": 0.0,
|
||||
"history":
|
||||
[
|
||||
]
|
||||
},
|
||||
"distraction_free":
|
||||
{
|
||||
"menu_visible": true,
|
||||
"show_minimap": false,
|
||||
"show_open_files": false,
|
||||
"show_tabs": false,
|
||||
"side_bar_visible": false,
|
||||
"status_bar_visible": false
|
||||
},
|
||||
"file_history":
|
||||
[
|
||||
"/C/Users/eeman/learning/django-rest-tutorial/snippets/models.py",
|
||||
"/C/Users/eeman/learning/django-rest-tutorial/snippets/serializers.py",
|
||||
"/C/Users/eeman/learning/django-rest-tutorial/.gitignore",
|
||||
"/C/Users/eeman/AppData/Roaming/Sublime Text/Packages/User/Preferences.sublime-settings",
|
||||
"/C/Users/eeman/apps/scripts/activate-vc-vars.bat.txt"
|
||||
],
|
||||
"find":
|
||||
{
|
||||
"height": 32.0
|
||||
},
|
||||
"find_in_files":
|
||||
{
|
||||
"height": 0.0,
|
||||
"where_history":
|
||||
[
|
||||
]
|
||||
},
|
||||
"find_state":
|
||||
{
|
||||
"case_sensitive": false,
|
||||
"find_history":
|
||||
[
|
||||
],
|
||||
"highlight": true,
|
||||
"in_selection": false,
|
||||
"preserve_case": false,
|
||||
"regex": false,
|
||||
"replace_history":
|
||||
[
|
||||
],
|
||||
"reverse": false,
|
||||
"scrollbar_highlights": true,
|
||||
"show_context": true,
|
||||
"use_buffer2": true,
|
||||
"use_gitignore": true,
|
||||
"whole_word": false,
|
||||
"wrap": true
|
||||
},
|
||||
"incremental_find":
|
||||
{
|
||||
"height": 32.0
|
||||
},
|
||||
"input":
|
||||
{
|
||||
"height": 0.0
|
||||
},
|
||||
"menu_visible": true,
|
||||
"output.find_results":
|
||||
{
|
||||
"height": 0.0
|
||||
},
|
||||
"pinned_build_system": "",
|
||||
"replace":
|
||||
{
|
||||
"height": 60.8
|
||||
},
|
||||
"save_all_on_build": true,
|
||||
"select_file":
|
||||
{
|
||||
"height": 0.0,
|
||||
"last_filter": "",
|
||||
"selected_items":
|
||||
[
|
||||
[
|
||||
"gitig",
|
||||
".gitignore"
|
||||
],
|
||||
[
|
||||
"seria",
|
||||
"snippets\\serializers.py"
|
||||
],
|
||||
[
|
||||
"mdoel",
|
||||
"snippets\\models.py"
|
||||
]
|
||||
],
|
||||
"width": 0.0
|
||||
},
|
||||
"select_project":
|
||||
{
|
||||
"height": 0.0,
|
||||
"last_filter": "",
|
||||
"selected_items":
|
||||
[
|
||||
],
|
||||
"width": 0.0
|
||||
},
|
||||
"select_symbol":
|
||||
{
|
||||
"height": 0.0,
|
||||
"last_filter": "",
|
||||
"selected_items":
|
||||
[
|
||||
],
|
||||
"width": 0.0
|
||||
},
|
||||
"settings":
|
||||
{
|
||||
},
|
||||
"show_minimap": true,
|
||||
"show_open_files": false,
|
||||
"show_tabs": true,
|
||||
"side_bar_visible": true,
|
||||
"side_bar_width": 183.0,
|
||||
"status_bar_visible": true,
|
||||
"template_settings":
|
||||
{
|
||||
}
|
||||
}
|
|
@ -14,8 +14,9 @@ Including another URLconf
|
|||
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
|
||||
"""
|
||||
from django.contrib import admin
|
||||
from django.urls import path
|
||||
from django.urls import path, include
|
||||
|
||||
urlpatterns = [
|
||||
path('admin/', admin.site.urls),
|
||||
path("", include("snippets.urls")),
|
||||
path('admin/', admin.site.urls)
|
||||
]
|
||||
|
|
Loading…
Reference in New Issue