1. 程式人生 > >Django 模板Template粗略使用

Django 模板Template粗略使用

con render 使用 ack 渲染 then all 手機號 ken


Template模板配置步驟

  1. 在當前工作目錄創建templates文件夾
  2. 配置settings.py文件
MIDDLEWARE = [
    ‘django.middleware.security.SecurityMiddleware‘,
    ‘django.contrib.sessions.middleware.SessionMiddleware‘,
    ‘django.middleware.common.CommonMiddleware‘,
    # ‘django.middleware.csrf.CsrfViewMiddleware‘,  # 註釋這句話,不會報403錯誤
    ‘django.contrib.auth.middleware.AuthenticationMiddleware‘,
    ‘django.contrib.messages.middleware.MessageMiddleware‘,
    ‘django.middleware.clickjacking.XFrameOptionsMiddleware‘,
]
TEMPLATES = [
    {
        ‘BACKEND‘: ‘django.template.backends.django.DjangoTemplates‘,
        ‘DIRS‘: [os.path.join(BASE_DIR,‘templates‘)], # 配置項目路徑,這句話意思是當前模板路徑為當前工程目錄下創建的templates文件夾,BASE_DIR settings.py中已經定義
        ‘APP_DIRS‘: True,
        ‘OPTIONS‘: {
            ‘context_processors‘: [
                ‘django.template.context_processors.debug‘,
                ‘django.template.context_processors.request‘,
                ‘django.contrib.auth.context_processors.auth‘,
                ‘django.contrib.messages.context_processors.messages‘,
            ],
        },
    },
]

模板使用步驟

(1). 在urls.py中添加一個新的url用於顯示數據。
(2). 創建相應的視圖函數

def  all_stu(request):
    if request.method == ‘GET‘:
        stus = Student.objects.all()
        return render(request,‘stus.html‘,{‘students‘:stus}) # 在頁面渲染,第一個參數為請求,第二參數為要顯示的頁面,第三個參數必須傳入字典
       

(3). 在templates目錄下新建名為stus的html文件。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <table border="1">
        <thead>
        <th>姓名</th>
        <th>年齡</th>
        <th>操作</th>
        </thead>
        <tbody>
            {% for stu in students %}   <!--for 叠代得到的學生對象集合-->
            <tr>
                <td>{{stu.s_name}}</td>  <!--{{stus.s_name}}拿到學生姓名-->
                <td>{{stu.s_age}}</td>    <!--{{stus.s_age}}拿到學生年齡-->
                <td>
                    <a href="/add_info/?stu_id={{stu.id}}">添加擴展信息</a> <!--添加鏈接,為了給指定學生添加學生信息,stu_id={{stu.id}}是為了得到具體點擊的那個學生的id便於添加到數據庫-->
                </td>
            </tr>
            {% endfor %}   <!--結束語法-->
        </tbody>
    </table>
</body>
</html>

(4). 在templates文件目錄下添加名為info的html頁

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form action="" method="post"> <!--post 表單-->
        電話號碼:<input type="text" name="phone">
        地址:<input type="text" name="address">
        <input type="submit" value="提交">
    </form>
</body>
</html>

(5) . 在視圖中添加提交更新到數據庫的視圖函數

def add_info(request):
    # method 獲取請求HTTP方式
    if request.method == ‘GET‘:
        return render(request,‘info.html‘) # 點擊鏈接請求url後跳轉info頁
    if request.method == ‘POST‘:
        # 獲取頁面中提交的手機號碼和地址,並保存
        phone = request.POST.get(‘phone‘)
        address = request.POST.get(‘address‘) # request.POST.get得到表單提交的數據
        stu_id = request.GET.get(‘stu_id‘) # request.GET.get得到請求url後的stu_id
        StudentInfo.objects.create(phone=phone,address=address,stu_id=stu_id)
        return HttpResponse(‘success‘)

上述幾步操作後,就可以完成與1個簡單的模板展示

Django 模板Template粗略使用