Sto scrivendo un sito web basato su Django, ma ho bisogno di servire un semplice file di testo. È il modo corretto di farlo posizionandolo nella directory statica e bypassando Django?Come posso pubblicare un file di testo da Django?
risposta
Se il file è statico (non generato dall'app django), è possibile inserirlo nella directory statica.
Se il contenuto di questo file è generato da Django, è possibile restituirlo in HttpResponse con text/plain
come mimo.
content = 'any string generated by django'
return HttpResponse(content, content_type='text/plain')
Si può anche dare un nome al file impostando il Content-Disposition
della risposta.
filename = "my-file.txt"
content = 'any string generated by django'
response = HttpResponse(content, content_type='text/plain')
response['Content-Disposition'] = 'attachment; filename={0}'.format(filename)
return response
['C'è un esempio nella documentazione per i file PDF] (https://docs.djangoproject.com/en/dev/howto/outputting-pdf/), che mostra come impostare un mimetype non HTML su un Django ' HttpResponse'. –
Sarebbe possibile aggiungere un nome file specifico al file generato dal contenuto @luc ?? – chuseuiti
@chuseuiti Sì, ho aggiornato la mia risposta – luc
Sono d'accordo con @luc però un'altra alternativa è di usare X-Accel-Redirect
intestazione.
Immaginate di dover servire file statici protetti grandi (devono accedere per visualizzarli). Se inserisci il file nella directory statica, l'accesso è aperto e chiunque può visualizzarlo. Se lo servi in Django aprendo il file e poi servendolo, c'è troppo IO e Django userà più RAM dato che deve caricare il file nella RAM. La soluzione è avere una vista, che autentificherà un utente contro un database, tuttavia invece di restituire un file, Django aggiungerà l'intestazione X-Accel-Redirect
alla sua risposta. Ora poiché Django è dietro a nginx, nginx vedrà questa intestazione e servirà il file statico protetto. Questo è molto meglio perché nginx è molto migliore e molto più fasullo nel servire file statici rispetto a Django. Here sono documenti di nginx su come farlo. Puoi anche fare una cosa simile in Apache, tuttavia non ricordo l'intestazione.
Risposta interessante. Grazie – luc
Avevo un requisito simile per ottenere un modello di testo per un modulo tramite AJAX. Ho scelto per la sua attuazione, con una vista basata modello (Django 1.6.1) come questo:
from django.http import HttpResponse
from django.views.generic import View
from django.views.generic.detail import SingleObjectMixin
from .models import MyModel
class TextFieldView(SingleObjectMixin, View):
model = MyModel
def get(self, request, *args, **kwargs):
myinstance = self.get_object()
content = myinstance.render_text_content()
return HttpResponse(content, content_type='text/plain; charset=utf8')
Il testo reso è piuttosto piccola e generati dinamicamente da altri campi del modello.
- 1. Come posso pubblicare un file JavaScript dinamico da Wicket?
- 2. Come posso pubblicare un "rilascio" su github?
- 3. Come pubblicare e recuperare blob con Django
- 4. Come posso pubblicare su un modulo di Django 1.2 usando urllib?
- 5. Come sovrascrivere un file di testo da un file batch
- 6. Come pubblicare un file in webpy?
- 7. Come posso creare il mio testo NLTK da un file di testo?
- 8. Come pubblicare file usando JSoup?
- 9. Come pubblicare un array di file in ASP.NET MVC 3?
- 10. Come posso creare un digest di hash MD5 da un file di testo?
- 11. Come posso pubblicare un elenco di articoli in MVC
- 12. Copia un elenco di file come testo da Windows Explorer
- 13. Gradle: come posso pubblicare un file zip da un progetto non java e consumarlo in un progetto java?
- 14. Come pubblicare un pacchetto npm con i file di distribuzione?
- 15. Django: Come posso ottenere un blocco da un modello?
- 16. Come posso leggere un file di testo senza bloccarlo?
- 17. Come posso analizzare un file di testo usando javascript
- 18. Come posso rimuovere caratteri non di parole da un testo?
- 19. Come pubblicare le porte nei file docker
- 20. Come posso pubblicare Raw Json usando RestSharp?
- 21. Come posso grep per un modello di testo in un file di testo compresso?
- 22. Come posso pubblicare un modulo in laravel 5 usando ajax?
- 23. Come posso scaricare un file da EC2
- 24. Come posso creare un'immagine PIL da un file in memoria?
- 25. Come posso generare un file PDF da un file binario?
- 26. Come pubblicare un servizio Web da VS 2010?
- 27. Come pubblicare un file in MVC senza esporre l'URL?
- 28. Pubblicare un download su bitbucket da uno script di shell
- 29. Come posso importare un file di testo delimitato da spazi bianchi in MySQL?
- 30. Come posso scrivere in un file di testo in modo affidabile da Excel VBA?
Sì, se il file è di testo semplice (nessun contenuto dinamico) è corretto. –