參考資料:Python架站特訓班Django 3最強實戰
延續專案:用擲骰子來說視圖(View)如何傳送變數到模版(Template)
1. 設定filter的URL,passdata\urls.py。| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | """
URL configuration for passdata project.
The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/5.0/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.urls import include, path
    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path
from passdataapp.views import dice, dice2, dice3, show, filter
urlpatterns = [
    path('admin/', admin.site.urls),
    path('dice/', dice),
    path('dice2/', dice2),
    path('dice3/', dice3),
    path('show/', show),
    path('filter/', filter),
]
 | 
2.定義filter()函式passdataapp\views.py。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | from django.shortcuts import render
import random #加入random模組
# Create your views here.
def dice(request):
    no = random.randint(1, 6) #亂數產生1-6其中一個數字
    return render(request, "dice.html", {"no":no})
def dice2(request):
    no1 = random.randint(1, 6) #亂數產生1-6其中一個數字
    no2 = random.randint(1, 6) #亂數產生1-6其中一個數字
    no3 = random.randint(1, 6) #亂數產生1-6其中一個數字
    #使用locals()函式來傳遞所有的區域變數
    return render(request, "dice2.html", locals())
    
times = 0
def dice3(request):
    global times    #宣告global變數
    times = times + 1
    local_times = times
    username = "David"
    no = random.randint(1, 6) #亂數產生1-6其中一個數字
    return render(request, "dice3.html", locals())
def show(request):
	student1 = {"name":"王老五","phone":"0928-123456", "age":20}
	student2 = {"name":"林大智","phone":"0928-123457", "age":21}
	student3 = {"name":"陳三省","phone":"0928-123458", "age":22}
	student4 = {"name":"董小于","phone":"0928-123459", "age":20}
	student5 = {"name":"曾小平","phone":"0928-123450", "age":19}
	students = [student1, student2, student3, student4, student5]
	return render(request, "show.html", locals())
	
def filter(request):
	value = 100
	list1 = [1,2,3,4,5]
	password = "芝麻開門"
	html= "<h1>哈囉</h1>"
	value2 = False
	value3 = "a b c"
	return render(request, "filter.html", locals())
 | 
3.新增templates\filter.html檔案
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <!DOCTYPE html> <html> <head> <meta charset='utf-8'> <title>過濾器</title> </head> <body> <h6> value={{value}}, vlaue|add:"5"={{ value|add:"2" }} <br/> value|stringformat:"E"={{ value|stringformat:"E" }} <br/> list1= {{ list1 }}, list1|length = {{ list1|length }}, list1|slice:"2:" = {{ list1|slice:"2:" }} <br/> {% if password == "芝麻開門" %} 密碼正確 <br/> {% else %} 密碼錯誤 <br/> {% endif %} value2 = {{ value2 }}, value2|yesno:" 是, 否, 取消"={{ value2|yesno:" 是, 否, 取消" }} <br/> html={{ html }}, html|safe = {{ html|safe }} <br/> value3 = {{ value3 }}, value3|upper = {{ value3|upper }}, value3|slugify = {{ value3|slugify }}<br/> </h6> </body> </html> | 
執行結果:
開啟瀏覽器,輸入http://127.0.0.1:8000/filter/。

 
沒有留言:
張貼留言