#python #django
Вопрос:
Мне нужно использовать корейский язык в URL-адресе, но это не работает.
views.py
class BuildingInfoAPI(APIView):
def get(self, request):
queryset = BuildingData.objects.all()
serializer = BuildingSerializer(queryset, many=True)
return Response(serializer.data)
class ReviewListAPI(APIView):
def get(self, request):
queryset = ReviewData.objects.all()
serializer = ReviewSerializer(queryset, many=True)
return Response(serializer.data)
urls.py
urlpatterns = [
path('admin/', admin.site.urls),
path('api/buildingdata/', BuildingInfoAPI.as_view()),
path('api/buildingdata/<str:slug>/', ReviewListAPI.as_view())
]
Я пробовал slug:slug и url с помощью re_path, но в этих методах написано «страница не найдена»
поэтому я попробовал str:slug, но там написано
get() got an unexpected keyword argument 'slug'
Это данные слизней в моей модели.
slug = models.SlugField(max_length=50, unique=True, allow_unicode=True, default=uuid.uuid1)
«allow_unicode» позволяет использовать корейский язык в URL-адресе.
Я не могу найти, какой код неправильный.
Есть ли какие-либо проблемы с views.py или urls.py?
Ответ №1:
Для ReviewListAPI
.get(…)
этого метод должен принимать self
request
и slug
в качестве параметров:
class ReviewListAPI(APIView):
def get(self, request, slug):
queryset = ReviewData.objects.all()
serializer = ReviewSerializer(queryset, many=True)
return Response(serializer.data)
Поскольку ваш .get(…)
метод использует пули, вам, вероятно, следует переписать логику и принять во внимание пули.