Я запускаю веб-приложение Django и создаю REST Api с использованием Django Rest Framework. Я создал базовое представление списка / обновления, однако, когда я перехожу на URL, я получаю сообщение «Произошла ошибка сервера. Пожалуйста, свяжитесь с администратором. и в консоли: UnicodeDecodeError: кодек «ascii» не может декодировать байт 0xe2 в позиции 9735: порядковый номер не в диапазоне (128).
Я подозреваю, что это как-то связано с шаблоном, предположительно DRF, как сказано в позиции 9735.
Эта ошибка не является глобальной, так как форма в другой части моего сайта работает отлично.
Я даже не уверен, какие файлы показывать, но
models.py
from django.db import models
from django.contrib.auth.models import AbstractUser
from django.db import models
# Create your models here.
class User(AbstractUser):
type = models.CharField(max_length = 30, null = True, default = "")
class NewsPost(models.Model):
title = models.CharField(max_length = 30, null = True, default = "")
content = models.TextField(max_length = 1000, null = True, default = "")
def __unicode__(self):
return u'Title is %s' % self.title
class Emergency(models.Model):
title = models.CharField(max_length = 30, null = True, default = "")
content = models.TextField(max_length=1000, null=True, default="")
class EventUpdate(models.Model):
type = models.CharField(max_length = 30, null = True, default = "")
status = models.CharField(max_length = 300, null = True, default = "")
views.py
from django.shortcuts import render, render_to_response,HttpResponse, redirect
from .forms import *
from rest_framework import generics, mixins
from .serializers import *
# Create your views here.
def events(request):
context = {'test': 1}
return render(request, 'events.html', context = context)
def newspostform(request):
if request.method == 'POST':
form = NewsForm(request.POST)
if form.is_valid():
form.save()
return redirect('/dashboard')
else:
form = NewsForm()
else:
form = NewsForm()
return render(request, 'newspostview.html', {'form': form})
class NewsPostAPIView(generics.ListCreateAPIView):
queryset = NewsPost.objects.all()
serializer_class = NewsPostSerializer
serializers.py
из сериализаторов импорта rest_framework
из .models import *
class NewsPostSerializer(serializers.ModelSerializer):
class NewsPost:
model = NewsPost
fields = (
'title',
'content',
)
шаблоны в settings.py
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
URL в приложении:
urlpatterns = [
path('news-api/', NewsPostAPIView.as_view(), name = 'newsav'),
]
URL в основном:
urlpatterns = [
path('admin/', admin.site.urls),
path('events/', views.events),
path('newspost/', views.newspostform),
path('api/', include('vivapi.urls')),
]
Другая информация: я использую Django 2.2 на Python 3.6.
Любая помощь ценится. Гугл ли эту проблему, но нашел только общую информацию, не относящуюся к этому сценарию. Я также запустил sys.getdefaultencoding () в оболочке, и он вернул 'utf-8'.
Ранее я создавал API для одной и той же системы с одинаковыми версиями Python и Django, поэтому совершенно не понимаю, почему это произошло.
Спасибо,
Rohan