我已经使用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:
- 添加上述标签此行:
{% load static %}
- 添加 “{%静态” + “%}” 标签的所有标签,从而它看起来像这样:
- 添加相同的静态变量与polyfill.js和require.min.js到标签:
在添加{%逐字%}在开始和{%endverbatim%}结束时,但在使用require.min.js之前!
- 更改行::
在main.js加在文件的开头以下行路径
'./api_project.js', './api_data.js',
:
'api_project', 'api_data',
<link href="{% static "vendor/bootstrap.min.css" %}" rel="stylesheet" media="screen">
<script src="{% static "vendor/polyfill.js" %}"></script>
<script data-main="{% static "main.js" %}" src="{% static "vendor/require.min.js" %}"></script>
apiProject: './api_project.js', apiData: './api_data.js',
我有同样的问题,但无法解决。 –