Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django rest framework 向Django Rest Swagger添加基本Url_Django Rest Framework_Swagger Ui_Django Rest Swagger - Fatal编程技术网

Django rest framework 向Django Rest Swagger添加基本Url

Django rest framework 向Django Rest Swagger添加基本Url,django-rest-framework,swagger-ui,django-rest-swagger,Django Rest Framework,Swagger Ui,Django Rest Swagger,我找不到将基本URL添加到djangorest-swagger的方法。我试着加上 SWAGGER_SETTINGS = { "base_path": 'localhost:62090/', } 到settings.py。但是它不起作用。我找不到在swagger ui中显示基本url的方法,但我可以在url.py中添加这样的基本url schema_view = get_swagger_view(title='Pastebin API',url='/pastebin/') 此代码在主机

我找不到将基本URL添加到
django
rest-swagger
的方法。我试着加上

SWAGGER_SETTINGS = {
    "base_path": 'localhost:62090/',
}

settings.py
。但是它不起作用。

我找不到在swagger ui中显示基本url的方法,但我可以在
url.py中添加这样的基本url

schema_view = get_swagger_view(title='Pastebin API',url='/pastebin/')

此代码在主机和指定的url u之间添加基本url。

基本上,您需要在OpenAPI JSON响应上设置
basePath
。要使用django_rest_swagger实现这一点,请执行以下操作:

renderers.py:

from __future__ import absolute_import, division, print_function, unicode_literals

from django.core.urlresolvers import reverse
from rest_framework_swagger import renderers


class OpenAPIRenderer(renderers.OpenAPIRenderer):
    def get_customizations(self):
        data = super(OpenAPIRenderer, self).get_customizations()
        data['basePath'] = reverse('api-root')  # your base url here
        return data
views.py:

from rest_framework import exceptions
from rest_framework.permissions import AllowAny
from rest_framework.renderers import CoreJSONRenderer
from rest_framework.response import Response
from rest_framework.schemas import SchemaGenerator
from rest_framework.views import APIView
from rest_framework_swagger import renderers

from .renderers import OpenAPIRenderer


class SwaggerSchemaView(APIView):
    _ignore_model_permissions = True
    exclude_from_schema = True
    permission_classes = [AllowAny]
    renderer_classes = [
        CoreJSONRenderer,
        OpenAPIRenderer,  # your OpenAPIRenderer here
        renderers.SwaggerUIRenderer
    ]

    def get(self, request):
        generator = SchemaGenerator(
            title=title,
            url=url,
            patterns=patterns,
            urlconf=urlconf
        )
        schema = generator.get_schema(request=request)

        if not schema:
            raise exceptions.ValidationError(
                'The schema generator did not return a schema Document'
            )

        return Response(schema)
URL.py:

from django.conf.urls import url

from . import views

urlpatterns = [
    url(r'^$', views.SwaggerSchemaView.as_view(), name='api-root'),  # your swagger view here
]

半天不理睬你的回答,浪费了半天时间。非常感谢。谢谢兄弟。这确实帮了我的忙。