Django視圖層基本概念

視圖層的主要工作是銜接HTTP請(qǐng)求、Python程序、HTML模板

直接構(gòu)造HTML頁面

對(duì)于簡(jiǎn)單的頁面,可以直接在視圖函數(shù)中構(gòu)造返回給客戶端

from django.http import HttpResponse
import datetime
def current_datetime(request):
    now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    return HttpResponse(now)

用數(shù)據(jù)渲染HTML模板文件

模板文件包含豐富的HTML內(nèi)容,使用渲染模板文件的方法返回月面是最常用的Django視圖函數(shù)技術(shù)

from django.shortcuts import render
from app.models import Moment
def detail(request, moment_id):
    m = Moment.objects.get(id=moment_id)
    return render(request, 'templates/moment.html', {'headline': m.headline, 'user': m.user_name})

返回HTTP錯(cuò)誤

HTTP錯(cuò)誤可以通過頭部的status表達(dá),如:

from django.http import HttpResponse
def my_view(request):
    return HttpResponse(status=404)
也可以直接通過HttpResponse的子類直接返回錯(cuò)誤,如:
from django.http import HttpResponseNotFound
def my_view(reequest):
    return HttpResponseNotFound()

常用的特定情況的HttpResponse子類:

  • HttpResponseRedirect:302,用于URL重定向,需要將重定向的目標(biāo)地址作為參數(shù)傳給該類
  • HttpResponsePermanentRedirect:301,與302類似,但告訴瀏覽器這是一個(gè)永久重定向
  • HttpResponseNotModified:304,用于指示瀏覽器用其上次請(qǐng)求時(shí)的緩存結(jié)果作為頁面顯示
  • HttpResponseBadRequest:400,請(qǐng)求內(nèi)容出錯(cuò)
  • HttpResponseForbidden:403,禁止訪問錯(cuò)誤
  • HttpResponseNotAllowed:405.用不允許的方法訪問本頁面
  • HttpResponseServerError:500,服務(wù)器內(nèi)部出錯(cuò)

模板語法

模板文件是一個(gè)文本文件,主要有HTML、CSS等組成,如:

{% extends "base.html" %}
{% block title %}{{ section.title }}{% endblock %}
{% block content %}
<h1>{{ section.title }}</h1>
{% for moment in moment_list %}
<h2>
    {{% moment.headline|upper %}}
</h2>
{% endfor %}
{% endblock %}

1、變量替換

用雙大括號(hào)標(biāo)記 {{ variable }} 指示進(jìn)行變量?jī)?nèi)容替換

2、過濾器

放在變量后用于控制變量顯示格式的技術(shù),變量|過濾器,過濾器有很多,可以查看文檔了解

3、流程控制

Django提供基本的流程控制,如 {% for %}...{% endfor %}、{% if %}...{% endif %}

4、模板繼承

模板繼承功能可以使多個(gè)頁面的公共部分編寫在一個(gè)模板文件中,父模板主要是定義頁面的框架

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容