2017-04-04 61 views
0

我已经使用apidoc library为我的Django应用程序创建了文档。 它使用角度创建文档。应用程序正在Heroku上运行。将文档添加到django应用程序 - 与角度冲突

当我打开index.html文件时,文档正常工作,但无法通过http://localhost:5000/docs打开文档。

首先,我得到这个错误:

“变量和属性可能不是下划线开头:‘__’” ,这我能够把{%逐字%}和{%endverbatim%}为绕过index.html文件。 (我首先不太满意,并希望以其他方式做)。

然后在页面停滞在载入画面上,但是当我在Chrome中打开它,我有以下错误:

"Uncaught SyntaxError: Unexpected token <" in polyfill.js:1 and require.min.js:1

而且还3警告:

"Resource interpreted as Stylesheet but transferred with MIME type text/html"

在供应商

/引导.min.cs,vendor/prettify.css和css/style.css

我们在其他项目中使用apidocs,并且它完美的工作,所以我认为这是Django的一个问题。由于文档是自动生成的,我宁愿将更改引入到应用程序中,而不是文档。 我在Chrome和Safari上试过了。

我的问题 1.我能做些什么才能使它工作? 2.如何在不将{%verbatim%}标签放入index.html的情况下使Django与Angular兼容?

这里是我的控制器:

from django.shortcuts import render 

def show_docs(request): 
    return render(request, 'index.html') 

和url_pattern:

from django.conf.urls import include, url 
from django.contrib import admin 
admin.autodiscover() 
import my_app.controller 
from django.views.decorators.csrf import csrf_exempt 

urlpatterns = [ 
    url(r'^docs/', my_app.controller.show_docs), 
] 

index.html头:

<head> 
 
    <meta http-equiv="X-UA-Compatible" content="IE=edge" /> 
 
    <title>Loading...</title> 
 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
 
    <link href="vendor/bootstrap.min.css" rel="stylesheet" media="screen"> 
 
    <link href="vendor/prettify.css" rel="stylesheet" media="screen"> 
 
    <link href="css/style.css" rel="stylesheet" media="screen, print"> 
 
    <link href="img/favicon.ico" rel="icon" type="image/x-icon"> 
 
    <link href="css/apidoccustom.css" rel="stylesheet" media="screen, print"> 
 
    <script src="vendor/polyfill.js"></script> 
 
</head>

编辑: 感谢answer from hubert,我能够找到问题的根源。 事实证明,Django对于API文档使用的RequireJS并不适用。

我必须在生成的代码中添加以下更改才能使其正常工作: 第1-4点是index.html,第5,6点是main。JS:

  1. 添加上述标签此行:

{% load static %}

  • 添加 “{%静态” + “%}” 标签的所有标签,从而它看起来像这样:
  • <link href="{% static "vendor/bootstrap.min.css" %}" rel="stylesheet" media="screen">

  • 添加相同的静态变量与polyfill.js和require.min.js到标签:
  • <script src="{% static "vendor/polyfill.js" %}"></script> <script data-main="{% static "main.js" %}" src="{% static "vendor/require.min.js" %}"></script>

  • 在添加{%逐字%}在开始和{%endverbatim%}结束时,但在使用require.min.js之前!

  • apiProject: './api_project.js', apiData: './api_data.js',

  • 更改行::
  • 在main.js加在文件的开头以下行路径

    './api_project.js', './api_data.js',

    'api_project', 'api_data',

  • 回答

    1

    从这两个错误:

    "Uncaught SyntaxError: Unexpected token <" in polyfill.js:1 and require.min.js:1 
    "Resource interpreted as Stylesheet but transferred with MIME type text/html" 
    

    我会认为有什么不对您加载静态文件。可能你有404或500,django加载默认路由。 检查您是否拥有静态文件的正确路由。

    +0

    我有同样的问题,但无法解决。 –

    相关问题