2016-12-04 40 views

回答

4

好了,所以我終於解決了我自己的問題。基本上,我結束了我的自定義一個覆蓋默認的index.html(它加入到我自己的templates目錄rest_framework_swagger/index.html):

{% extends "rest_framework_swagger/base.html" %} 
{% block extra_nav %} 
    <input type="text" id="auth_token" placeholder="Auth Token" /> 
    <input class="submit" type="submit" value="Submit" data-sw-translate=""> 
{% endblock %} 

{% block extra_scripts %} 
    <script> 
     var element = document.querySelector(("#api_selector")); 
     element.addEventListener("submit", function(event) { 
     event.preventDefault(); 
     var token = $("#auth_token").val(); 
       window.swaggerUi.api.clientAuthorizations.add("Authorization", new window.SwaggerClient.ApiKeyAuthorization("Authorization", token, "header")); 
     alert("authorization added: " + token); 
}); 

    </script> 
{% endblock %} 

從本質上講,我添加了一個輸入框(見extra_nav塊)導航欄在那裏用戶只需放置他們的自定義標題值(在我的情況下,它是認證標題)。一旦用戶點擊提交按鈕,我的自定義腳本(請參閱extra_scripts)將在執行防止表單提交的地方執行(django-rest-swagger將我的輸入框放置在ID爲api_selector的表單中,然後將令牌值添加到請求中。頭從這裏,任何的「實戰」按鈕現在將有額外的自定義請求頭

enter image description here

欲瞭解更多信息,覆蓋了默認的Django休息,招搖的用戶界面:http://django-rest-swagger.readthedocs.io/en/latest/customization/
更多關於覆蓋模板的信息:Override templates of external app in Django

+1

只是爲了讓它在應該存儲這些模板的位置上更清晰一些。假設你的初始應用叫做'core'。然後你應該添加模板到這個位置'core/templates/rest_framework_swagger/index.html'。然後通過修改'core/settings/base.py'使得新添加的模板可見: 'TEMPLATES = [{'DIRS':[os.path.join(BASE_DIR,'templates')]}]'' –