簡體   English   中英

Django 在views.py中返回static HTML?

[英]Django returning static HTML in views.py?

所以我有一個標准的Django項目,其基本視圖返回一個簡單的 HTML 確認語句。 我是否可以將視圖本身中的所有 HTML 定義為一個非常長的字符串並使用HttpResponse()返回它我知道這有點unorthodox ,但這是我正在考慮的一個例子:

from django.shortcuts import render
from django.http import HttpResponse
from django.shortcuts import render_to_response

def index(request):
    html = """
<html>
  <body>
    This is my bare-bones html page.
  </body>
</html>
"""
    return HttpResponse(html)

我相應的JSstylesheets將存儲在與視圖相同的目錄中。 在此示例中,我的應用程序中的 py 。 只是確保:我不是在問這是否有效,因為我已經知道答案是肯定的,我只是想知道這種方法是否有任何缺點/缺點,為什么不讓更多人這樣做?

大多數人不使用它,因為它將Python與HTML混合在一起,變得非常混亂,並且很快無法使用

您可以使用內置的模板渲染器來獲取作品過濾器/ templatetags / etc

回答你的問題,這個解決方案沒問題,但它並沒有被許多程序員采用,因為它使整個代碼雜亂無章,不容易理解。 此外,該系統不適用於大型項目,因為代碼將在與 python 相同的文件中包含大量 html。 根據性能將代碼分成文件總是很好且節省時間。

更好的解決方案

將 html 保存在當前目錄中名為templates的文件夾中,在這種情況下, templates文件夾可以包含index.html文件,該文件將具有

<html>
  <body>
    This is my bare-bones html page.
  </body>
</html>

在視圖中使用下面的代碼為此模板創建一個索引視圖

def index(request):
    return render(request, 'index.html')

如果您需要將一些數據傳遞給 html,您可以在請求中使用上下文,如下所示:

def index(request):
    context = {
         "name":"some name"
    }
    return render(request, 'index.html', context=context)

使用以下結構訪問 html 中的數據:

<html>
  <body>
    The data passed to the page is {{name}}.
  </body>
</html>

我希望這有幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM