ビューの 1 つから (時々) HttpResponse として静的ファイルの内容を返すことを検討しています。
Djangoでこれを行う簡単な方法はありますか?
ビューがテンプレート化やその他の計算で何かを行う場合、最善の方法は、静的オブジェクトを返す必要がある「時々」を決定し、その静的 URL への一時的なリダイレクトを発行することです。静的コンテンツを提供するサーバーは、コンテンツを配信する仕事です。
アップデート
私はしばらく Django を使用していなかったので、一般的には Web 開発などです。1.3 以降の Django には (どのように見えるか) 非常に簡単なリダイレクト メカニズムが含まれているとのことでした。(とにかく私が覚えているものよりも簡単です!)
https://docs.djangoproject.com/en/dev/topics/class-based-views/ Tadeck 提供
私はジョン・クレメントのアイデアがとても気に入りました。必要に応じて、ファイルを提供する方法は次のとおりです。
def view(request):
with open(path) as file:
response = HttpResponse(file.read(), content_type='application/pdf')
response['Content-Disposition'] = 'attachment; filename=filename.pdf'
return response
他の人が示したことに加えて、これは次の要求に対する応答を返すために時々使用される方法がありますrobots.txt
。
でviews.py
:
from django.views.generic import TemplateView
class RobotsTxtView(TemplateView):
"""A class-based view for responding to requests for robots.txt file
"""
template_name = 'robots.txt'
def render_to_response(self, context, **kwargs):
"""Overwritten render_to_response for applying text/html mimetype
"""
return super(RobotsTxtView, self).render_to_response(context,
content_type='text/plain', **kwargs)
ビューが必要な場合 (例: 内部urls.py
または実際のビューを生成しようとする場合)、これを使用します。
from myapp.views import RobotsTxtView
robots_view = RobotsTxtView.as_view()
テンプレート内のrobots.txt
ファイルには、実際には静的コンテンツ (または好きなもの) を含めることができます。
しかし、一般的に他の人は正しいです。静的コンテンツを提供している場合は、静的コンテンツとして提供し、必要がない場合は Django を使用してこのファイルを処理しないでください。
return HttpResponse("any content")
トリックリットをしますか?または私はあなたの質問を誤解しましたか