Джанго Отдых показывает TemplateDoesNotExist - PullRequest
0 голосов
/ 28 июня 2019

Я пытаюсь научиться django отдыхать на существующем блог-проекте. У моего проекта есть модель с именем "BlogPost". Там я создал конечную точку для получения объекта blogpost. Я могу создать блог успешно от администратора django, но всякий раз, когда я даю URL "http://127.0.0.1:8000/api/postings/1/",, он показывает ошибку "TemplateDoesNotExist at /api/postings/1/", в то время как в моем терминале нет никаких ошибок. Он показывает "GET /api/postings/1/ HTTP/1.1" 500 85630. Может кто-нибудь помогите мне, где я делаю не так?

from django.conf import settings
from django.db import models
from django.urls import reverse

class BlogPost(models.Model):
    # pk aka id --> numbers
    user        = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE) 
    title       = models.CharField(max_length=120, null=True, blank=True)
    content     = models.TextField(max_length=120, null=True, blank=True)
    timestamp   = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return str(self.user.username)

views.py:

from rest_framework import generics
from postapp.models import BlogPost
from .serializers import BlogPostSerializer

class BlogPostRudView(generics.RetrieveUpdateDestroyAPIView):
    lookup_field = 'pk'
    serializer_class = BlogPostSerializer

    def get_queryset(self):
        return BlogPost.objects.all()

Вот сериализатор:

from rest_framework import serializers   
from postapp.models import BlogPost

class BlogPostSerializer(serializers.ModelSerializer):
    class Meta:
        model = BlogPost
        fields = [
            'pk',
            'user',
            'title',
            'content',
            'timestamp',
        ]

Мои urls.py внутри API

from .views import BlogPostRudView

from django.urls import path

urlpatterns = [
    path('<int:pk>/', BlogPostRudView.as_view(), name='post-rud')

]

и мой urls.py внутри проекта:

from django.contrib import admin
from django.urls import path, include

app_name = "testproject"

urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/postings/',include('postapp.api.urls')),

]

Ответы [ 2 ]

1 голос
/ 28 июня 2019

Обязательно добавьте rest_framework к INSTALLED_APPS в вашем проекте settings.py

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_framework',
    ................

Вам также может понадобиться запустить migrations после добавления.

Все оваш код кажется в порядке

1 голос
/ 28 июня 2019

Django rest framework предоставит шаблон по умолчанию. Интересно, что-то не так сделано правильно при настройке приложения? Возможно, шаблоны путей? Вы пытались поразить конечную точку клиентом REST или curl? Что-то вроде:

curl -X "GET" "http://127.0.0.1:8000/api/postings/1" -H "Accept: application/json"

Я бы ожидал, что вышесказанное сработает. В этом случае взгляните на пути к шаблонам (хотя HTML-шаблон не требуется для REST API.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...