2013-02-16 13 views
6

Ho creato localmente documenti Sphinx statici (utilizzando make html).Documentazione Sphinx all'interno di un Flask che esegue un'applicazione web

Vorrei ora integrare i file Sfinge nella mia webapp che funziona con Flask. Dall'applicazione in esecuzione Flask, intendo semplicemente includere un collegamento ipertestuale verso la documentazione di Sphinx, che servirà come aiuto per l'applicazione.

Websupport sembra il modo di seguire, ma non mi è chiaro come avrei dovuto collegare il framework Flask ai file Sphinx.

Grazie per qualsiasi aiuto,

saluti

risposta

5

Si potrebbe semplicemente gestire con il server web, lo stesso modo di gestire la directory /static nel pallone. Per esempio, se si è utilizzato Apache come server Web di produzione, si potrebbe aggiungere

Alias /documentation /location/of/sphinx/html 
<Directory /location/of/sphinx/html> 
    Order deny,allow 
    Allow from all 
</Directory> 

alla configurazione del sito Apache, così poi si può solo collegarsi direttamente al http://yoursite.com/documentation per accedere ai file Sfinge, evitando Flask del tutto.

2

È possibile copiare la cartella _build/html dai tuoi documenti a una cartella doc nella directory pallone static, e servirli con la seguente regola:

@app.route('/doc/<dir>/<filename>', defaults={'static': True}) 
def doc(dir='',filename='index.html'): 
    path = join(dir,filename) 
    return app.send_static_file(path) 
+0

Da dove si ottiene "join" da? Forse usare qualcosa come "os.path.join (dir, filename)" – spitz

+1

Questo porta anche a un 404 a meno che "dir" e "nomefile" siano specificati. – spitz

1

In alcuni casi non si vuole esporre i vostri documenti di tutti gli utenti quindi la configurazione a livello di Apache o Nginx non è un'opzione. Il seguente ha funzionato per me:

@app.route('/docs', defaults = {'filename': 'index.html'}) 
@app.route('/docs/<path:filename>') 
@login_required 
def web_docs(filename): 
    path = os.path.join('docs/html', filename) 
    return app.send_static_file(path) 
Problemi correlati