このセットアップで問題はありませんが、チュートリアルからリッピングされています。
プロジェクトフォルダdjango_example
。
アプリケーションフォルダevents
。
django_example/settings.py
追加:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'events.apps.EventsConfig'
]
追加:
:コンテキストについては
events/apps.py
from __future__ import unicode_literals
from django.apps import AppConfig
class EventsConfig(AppConfig):
name = 'events'
、events/models.py
は次のようになります
from __future__ import unicode_literals
from django.db import models
# Create your models here.
class Event(models.Model):
name = models.TextField()
kind = models.TextField()
location = models.TextField()
start_hour = models.TextField()
end_hour = models.TextField()
creator = models.TextField()
class Meta:
verbose_name = "Event"
verbose_name_plural = "Events"
def __str__(self):
return self.name
type
をフィールド名として使用しないでください。
追加:
events/serializers.py
from rest_framework import serializers
from .models import Event
class EventSerializer(serializers.ModelSerializer):
class Meta:
model = Event
fields = ('name', 'kind')
events/views.py
追加:
from django.shortcuts import render
# Create your views here.
from django.http import HttpResponse
from django.views.decorators.csrf import csrf_exempt
from rest_framework.renderers import JSONRenderer
from rest_framework.parsers import JSONParser
from events.models import Event
from events.serializers import EventSerializer
class JSONResponse(HttpResponse):
"""
An HttpResponse that renders its content into JSON.
"""
def __init__(self, data, **kwargs):
content = JSONRenderer().render(data)
kwargs['content_type'] = 'application/json'
super(JSONResponse, self).__init__(content, **kwargs)
@csrf_exempt
def event_list(request):
"""
List all code snippets, or create a new snippet.
"""
if request.method == 'GET':
snippets = Event.objects.all()
serializer = EventSerializer(snippets, many=True)
return JSONResponse(serializer.data)
elif request.method == 'POST':
data = JSONParser().parse(request)
serializer = EventSerializer(data=data)
if serializer.is_valid():
serializer.save()
return JSONResponse(serializer.data, status=201)
return JSONResponse(serializer.errors, status=400)
@csrf_exempt
def event_detail(request, pk):
"""
Retrieve, update or delete a code snippet.
"""
try:
event = Event.objects.get(pk=pk)
except event.DoesNotExist:
return HttpResponse(status=404)
if request.method == 'GET':
serializer = EventSerializer(snippet)
return JSONResponse(serializer.data)
elif request.method == 'PUT':
data = JSONParser().parse(request)
serializer = EventSerializer(event, data=data)
if serializer.is_valid():
serializer.save()
return JSONResponse(serializer.data)
return JSONResponse(serializer.errors, status=400)
elif request.method == 'DELETE':
event.delete()
return HttpResponse(status=204)
events/urls.py
追加:
from django.conf.urls import url
from events import views
urlpatterns = [
url(r'^events/$', views.event_list),
url(r'^events/(?P<pk>[0-9]+)/$', views.event_detail),
]
追加:
django_example/urls.py
from django.conf.urls import url, include
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^', include('events.urls'))
]
をあなたはそれだとしても、あなたのAPIからの応答を見ることができるはずmodels.pyを埋めた後、あなたの移行を実行した場合ただ空のリスト。
ルートとビューセットを追加してください。 – seanmus
@SeanMルートを追加しました。しかし、私は考えているので、私はビューセットを持っていない、メソッドを取得するビューセットと同じ考える。ではない? – cano
makemigrationsを実行して移行しましたか? – seanmus