Piszę stronę opartą na Django, ale muszę obsługiwać prosty plik tekstowy. Czy jest to właściwy sposób, umieszczając go w katalogu statycznym i ominąc Django?Jak mogę przesłać plik tekstowy z Django?
Odpowiedz
Jeśli plik jest statyczny (nie jest generowany przez aplikację django), można go umieścić w katalogu statycznym.
Jeśli treść tego pliku jest generowana przez Django, możesz zwrócić go w HttpResponse pod numerem text/plain
jako typ MIME.
content = 'any string generated by django'
return HttpResponse(content, content_type='text/plain')
Można także podać nazwę pliku przez ustawienie Content-Disposition
odpowiedzi.
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
['Istnieje przykład w dokumentacji plików PDF] (https://docs.djangoproject.com/en/dev/howto/outputting-pdf/), który pokazuje, jak ustawić typ MIME inny niż HTML na Django ' HttpResponse'. –
Czy istnieje możliwość dodania konkretnej nazwy pliku do pliku wygenerowanego z treści @ cc? – chuseuiti
@chuseuiti Tak, zaktualizowałem moją odpowiedź – luc
zgadzam się z @luc jednak inną alternatywą jest użycie X-Accel-Redirect
nagłówek.
Wyobraź sobie, że musisz wyświetlać duże pliki chronione (musisz się zalogować, aby je wyświetlić). Jeśli umieścisz plik w katalogu statycznym, jego dostęp będzie otwarty i każdy będzie mógł go zobaczyć. Jeśli wyświetlasz go w Django, otwierając plik, a następnie go obsługując, jest za dużo IO, a Django używa więcej pamięci RAM, ponieważ musi załadować plik do pamięci RAM. Rozwiązaniem jest posiadanie widoku, który uwierzytelni użytkownika w bazie danych, jednak zamiast zwracania pliku, Django doda nagłówek X-Accel-Redirect
do odpowiedzi. Teraz, odkąd Django jest za Nginxem, nginx zobaczy ten nagłówek, a następnie wyświetli chroniony plik statyczny. Jest to o wiele lepsze, ponieważ nginx jest znacznie lepszy i znacznie łatwiejszy w serwowaniu plików statycznych w porównaniu do Django. Here są dokumentacje nginx, jak to zrobić. Możesz też zrobić coś podobnego w Apache, ale nie pamiętam nagłówka.
Ciekawa odpowiedź. Dzięki – luc
Podobny wymóg dotyczył uzyskania szablonu tekstowego dla formularza za pośrednictwem AJAX. I zdecydować się na wprowadzenie go z myślą model oparty Django (1.6.1) tak:
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')
wytopione tekst jest dość mała i dynamicznie generowane z innych dziedzin w modelu.
- 1. Jak przesłać plik z Django
- 2. Jak przesłać plik z Django API REST
- 3. Jak przesłać plik z django (python) i s3?
- 4. jak mogę przesłać plik za pomocą PHP
- 5. Jak pobrać plik tekstowy z iPhone SDK?
- 6. Korzystanie z Django Rest Framework, jak mogę przesłać plik ORAZ wysłać ładunek JSON?
- 7. Jak przesłać plik na Dysk Google
- 8. Jak zastąpić plik tekstowy z pliku wsadowego
- 9. Jak zminimalizować plik tekstowy JSON z pomrukiem?
- 10. Jak odczytać plik tekstowy z usługi Windows?
- 11. Czytanie plik tekstowy z jQuery
- 12. Parse plik tekstowy z XSLT
- 13. Golang: Jak odczytać plik tekstowy?
- 14. Jak mogę otworzyć plik tekstowy względem mojego projektu MVC?
- 15. Jak mogę uruchomić plik tekstowy SQL w bazie danych MySQL?
- 16. Jak przesłać plik (załącznik) z przeglądarki?
- 17. Jak przesłać plik z Phonegap i JqueryMobile?
- 18. Plik tekstowy dołączania Androida:
- 19. Jak przesłać plik w Angular2
- 20. Jak mogę przesłać plik w MVC 6 pod vNext?
- 21. Jak przesłać formularz przy wejściu, gdy obszar tekstowy jest ustawiony?
- 22. Jak mogę przesłać plik do Solr w systemie Windows?
- 23. Przeczytaj plik tekstowy z zasobów C#
- 24. Jak odczytać rosnący plik tekstowy w C++?
- 25. Jak czytać plik tekstowy w systemie Android?
- 26. Korzystając z .NET 2.0, w jaki sposób mogę przesłać FTP do serwera, pobrać plik i usunąć plik?
- 27. Jak mogę przesłać strumieniowo wideo z ServiceWorker?
- 28. Odczytaj plik tekstowy z PCLStorage w Xamarin.Forms
- 29. Jak analizować plik tekstowy za pomocą C#
- 30. PowerShell: Jak sortować plik tekstowy według kolumny?
Tak, jeśli plik jest zwykłym tekstem (bez zawartości dynamicznej), jest poprawny. –