Django 過濾及錯誤頁面展示

2021-08-19 15:22:42 字數 4264 閱讀 4648

建立專案test並完成專案配置後,建立應用student,進入models.py,建立模型,輸入**如下:

from django.db import models

from grade.models import grade

class

student

(models.model):

stu_name = models.charfield

(max_length=10)

stu_*** = models.booleanfield

() stu_birth = models.datefield

() stu_create_time = models.datetimefield

(auto_now_add=true)

stu_operate_time = models.datetimefield

(auto_now=true)

stu_chinese = models.decimalfield

(max_digits=3, decimal_places=1)

stu_math = models.decimalfield

(max_digits=3, decimal_places=1)

g = models.foreignkey

(grade, null=true) # 設定外來鍵

class

meta:

db_table = 'stu'

class

studentinfo

(models.model):

stu_addr = models.charfield

(max_length=20)

stu_age = models.integerfield

() stu = models.onetoonefield

(student, on_delete=models.cascade) # 一對一關係

class

meta:

db_table = 'stu_info'

所謂過濾,即將我們需要的資訊提取出來,展示到前端頁面,我們在templates資料夾下建立sel_student.html檔案,**如下:

id:

}姓名:

}生日:}}

views.py新增**如下:

from django.db.models import f, q

from django.shortcuts import render

from stu.models import student

defselect_stu

(request):

# 查詢資料

# stus = student.objects.all()

# 查詢所有女生

# stus = student.objects.get(stu_***=0)

# stus = student.objects.filter(stu_***=0)

# return render(request, 'sel_stu.html', )

# 查詢id從大到小的排序

# stus = student.objects.all().order_by('-id')

# 查詢id最大的一條資料

# stus = student.objects.all().order_by('-id').first()

# 查詢id最小的一條資料

# stus = student.objects.all().order_by('-id').last()

# 獲取男生的資料個數

# stus = student.objects.filter(stu_***=true).count()

# print(stus)

# 查詢所有80後女生姓名

# stus = student.objects.filter(stu_***=false).\

# filter(stu_birth__gte='1980-01-01').\

# filter(stu_birth__lt='1990-01-01')

# 查詢姓李的資料

# stus = student.objects.filter(stu_name__startswith='李')

# 查詢姓姓名以華結束的資料

# stus = student.objects.filter(stu_name__endswith='華')

# 姓名中包含李的資料

# stus = student.objects.filter(stu_name__contains='李')

# 判斷是否存在張三

# stus = student.objects.filter(stu_name='張三').exists()

# print(stus)

# 獲取指定多個id的值

# ids = [1, 2]

# stus = student.objects.filter(id__in=ids)

# 查詢語文成績大於等於數學成績的學生

# stus = student.objects.filter(stu_chinese__gte=f('stu_math'))

# 查詢語文成績超過數學成績10分的學生

# stus = student.objects.filter(stu_chinese__gte=f('stu_math') + 10)

# 查詢學生姓名不叫李白的,或者語文成績大於80分的學生

# ~代表非

stus = student.objects.filter(~q(stu_name='李白') | q(stu_chinese__gt=80))

# 返回給前端

return render(request, 'sel_stu.html', )

以上展示了一些常用的過濾語句,下面羅列一些知識點:

get:返回乙個滿足條件的物件,沒有滿足條件的則直接報doesnotexit的異常,如果查詢結果有多個資料的話,就報mulitiobjectsreturned

filter:返回所有滿足條件的物件

first():返回第一條資料

last():返回最後一條資料

count():求和

delete():刪除資料

gt / gte:大於 大於等於

lt / lte:小於 小於等於

在使用者訪問頁面過程中,時常會遇到頁面報錯,如何將頁面報錯友好的展示給使用者,就是我們下面要說的。

錯誤頁面分兩種,一種是404錯誤頁面,404頁面是客戶端在瀏覽網頁時,伺服器無法正常提供資訊,或是伺服器無法回應,且不知道原因所返回的頁面。一種是500錯誤頁面,造成500錯誤原因多種多樣,這裡就不一一贅述。

首先,我們在templates資料夾下建立404.html500.html兩個檔案,在 404.html 新增**如下:

lang="en">

charset="utf-8">

404錯誤頁面title>

head>

我是400錯誤頁面h1>

body>

html>

在 500.html 新增**如下:

lang="en">

charset="utf-8">

500錯誤頁面title>

head>

我是500錯誤頁面h1>

body>

html>

student目錄下views.py新增**如下:

def

page_not_found

(request):

return render(request, '404.html')

defserver_error

(request):

return render(request, '500.html')

django 的前端展示頁面 注意

django 前端展示頁面 注意 普通字段 物件.欄位名 資料庫的資料 有choices引數的字段 物件.欄位 資料庫的資料 物件.get 欄位名 display 顯示的結果 自定義方法 def show class self return join str i for i in self.clas...

cms及展示頁標籤過濾

cms系統是使用者可以編寫內容的系統,通過內容填充的方式展現。一般的cms是通過富文字編輯器來編輯,編輯器通常都會有一些過濾功能。如果要實現簡單的過濾,比如防止使用者寫乙個之類的,js可以通過encode來過濾,將標籤轉義 velovity可以通過html 函式來轉為string 就這樣 還有一種問...

django 自定義錯誤頁面

當django找不到與請求匹配的url時,或者當丟擲乙個異常時,將呼叫乙個錯誤處理檢視。django預設的自帶的錯誤檢視包括400 403 404和500,分別表示請求錯誤 拒絕服務 頁面不存在和伺服器錯誤。它們分別位於 django有內建的html模版,用於返回錯誤頁面給使用者,但是這些403,4...