私はdjangorestフレームワークチュートリアルに従い、ブログアプリケーションを構築しています。しかし、私はHTMLフォームにデータをレンダリングしようとしているが、私は 'NoReverseMatch'エラーに直面している。以下はdjangorestフレームワークでNoReverseMatchエラーが発生しました。
私のmodels.pyは
from django.db import models
class BlogModel(models.Model):
blog_title = models.CharField(max_length = 50)
blog_post = models.TextField(max_length = 100)
blog_author = models.CharField(max_length = 30)
blog_tags = models.CharField(max_length = 30)
def __str__(self):
return self.blog_title
class Meta:
ordering = ('blog_title',)
serializers.py
from rest_framework import serializers
from blogg.models import *
class BlogSerializer(serializers.ModelSerializer):
class Meta:
model = BlogModel
fields = ('blog_title', 'blog_post', 'blog_author', 'blog_tags')
views.py
from django.shortcuts import render
from rest_framework.views import APIView
from rest_framework.response import Response
from django.http import Http404
from blogg.models import *
from blogg.serializers import *
from rest_framework.renderers import TemplateHTMLRenderer
class BlogList(APIView):
serializer_class = BlogSerializer
renderer_classes = [TemplateHTMLRenderer]
template_name = 'home.html'
def get(self, request, format = None):
blogs = BlogModel.objects.all()
#serializer = BlogSerializer(blogs, many = True)
#return Response(serializer.data)
return Response({'blogs':blogs})
def post(self, request, format = None):
serializer = BlogSerializer(data = request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
return Response(serializer.errors)
class BlogDetail(APIView):
serializer_class = BlogSerializer
renderer_classes = [TemplateHTMLRenderer]
template_name = "details.html"
def get_object(self, pk):
try:
return BlogModel.objects.get(pk = pk)
except BlogModel.DoesNotExist:
raise Http404
def get(self, request, pk, format = None):
blogs = self.get_object(pk)
serializer = BlogSerializer(blogs)
#return Response(serializer.data)
return Response({'serializer':serializer, 'blogs':blogs})
def put(self, request, pk, format = None):
blogs = self.get_object(pk)
serializer = BlogSerializer(blogs, data = request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
return Response(serializer.errors)
def delete(self, request, pk, format = None):
blogs = self.get_object(pk)
blogs.delete()
serializer = BlogSerializer(blogs)
return Response(serializer.data)
urls.py
from django.conf.urls import url, include
from blogg import views
from rest_framework.urlpatterns import format_suffix_patterns
urlpatterns = [
url(r'^blogs/$', views.BlogList.as_view()),
url(r'^blogs/(?P<pk>[0-9]+)/$', views.BlogDetail.as_view()),
]
urlpatterns = format_suffix_patterns(urlpatterns)
です
details.html
{% load rest_framework %}
<html><body>
<h1>Blog - {{ blogs.title }}</h1>
<form action="{% url 'details' blogs.id %}" method="POST">
{% csrf_token %}
{% render_form serializer %}
<input type="submit" value="Save">
</form>
</body></html>
エラーの説明:ラインで
Reverse for 'details' with arguments '(1,)' and keyword arguments '{}' not found. 0 pattern(s) tried: []
:私がアクセスしようとしています<form action="{% url 'details' blogs.id %}" method="POST">
URL:
http://127.0.0.1:8000/blogg/blogs/1/
は、あなたが私を助けてもらえこれの。他の情報を教えてください