В настоящее время я использую APIView и @swagger_auto_schema для определения документации моей конечной точки.
В приведенном ниже коде вы можете увидеть, как добавить дополнительную информацию для определения вашей конечной точки. Я надеюсь, что это поможет вам
##serializers.py
class CategorySerializer(serializers.ModelSerializer):
"""
Serializing Categories
"""
class Meta:
model = Category
fields = [
'id', 'name', 'slug'
]
read_only_fields = [
'slug',
]
##views.py
username_param = openapi.Parameter('username', in_=openapi.IN_QUERY, description='Username',
type=openapi.TYPE_STRING)
email = openapi.Parameter('email', in_=openapi.IN_QUERY, description='Email',
type=openapi.TYPE_STRING)
category_response = openapi.Response('response description', CategorySerializer)
class CategoryList(APIView):
permission_classes = [AllowAny]
@swagger_auto_schema(
manual_parameters=[username_param, email],
query_serializer=CategorySerializer,
responses = {
'200' : category_response,
'400': 'Bad Request'
},
security=[],
operation_id='List of categories',
operation_description='This endpoint does some magic',
)
def get(self, request, format=None):
"""
GET:
Return a list of all the existing categories.
"""
categories = Category.objects.all()
serializer = CategorySerializer(categories, many=True)
return Response(serializer.data)
@swagger_auto_schema(
request_body=CategorySerializer,
query_serializer=CategorySerializer,
responses={
'200': 'Ok Request',
'400': "Bad Request"
},
security=[],
operation_id='Create category',
operation_description='Create of categories',
)
def post(self, request, format=None):
"""
POST:
Create a new category instance.
"""
serializer = CategorySerializer(data=request.data)
if serializer.is_valid():
serializer.save(created_by=self.request.user)
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Наконец, если вы хотите увидеть свои конечные точки в группах по ссылке, вы можете протестировать комментирование строки ниже в вашем urls.py
#urlpatterns = format_suffix_patterns(urlpatterns)
Ниже приведен экран того, как вы должны его видеть
[home][1]
[Get all categories][2]
[Post a new category][3]
[Endpoints in groups][4]
You can find more information in the link below
https://drf-yasg.readthedocs.io/en/stable/custom_spec.html
[1]: https://i.stack.imgur.com/iwsnB.png
[2]: https://i.stack.imgur.com/R7f1q.png
[3]: https://i.stack.imgur.com/1ia9F.png
[4]: https://i.stack.imgur.com/Gwckf.png
Вы просто нужно использовать полулогию вместо сюжета:
from pylab import *
import matplotlib.pyplot as pyplot
a = [ pow(10,i) for i in range(10) ]
fig = pyplot.figure()
ax = fig.add_subplot(2,1,1)
line, = ax.semilogy(a, color='blue', lw=2)
show()
Вы можете использовать метод Axes.set_yscale
. Это позволяет изменять масштаб после создания объекта Axes
. Это также позволит вам создать элемент управления, позволяющий пользователю выбирать масштаб, если это необходимо.
Соответствующая строка для добавления:
ax.set_yscale('log')
Вы можете использовать 'linear'
, чтобы вернуться к линейная шкала. Вот как будет выглядеть ваш код:
import pylab
import matplotlib.pyplot as plt
a = [pow(10, i) for i in range(10)]
fig = plt.figure()
ax = fig.add_subplot(2, 1, 1)
line, = ax.plot(a, color='blue', lw=2)
ax.set_yscale('log')
pylab.show()
Во-первых, не очень удобно смешивать код pylab
и pyplot
. Более того, стиль pyplot предпочтительнее использования pylab .
Вот немного очищенный код, использующий только функции pyplot
:
from matplotlib import pyplot
a = [ pow(10,i) for i in range(10) ]
pyplot.subplot(2,1,1)
pyplot.plot(a, color='blue', lw=2)
pyplot.yscale('log')
pyplot.show()
Соответствующая функция - pyplot.yscale ()
. Если вы используете объектно-ориентированную версию, замените ее методом Axes.set_yscale ()
. Помните, что вы также можете изменить масштаб оси X, используя pyplot.xscale ()
(или Axes.set_xscale ()
).
Проверьте мой вопрос В чем разница между «log» и «symlog»? , чтобы увидеть несколько примеров шкал графиков, которые предлагает matplotlib.