Python日記——Django模板的渲染

飢渴計科極客傑鏗發表於2016-07-14

看這篇文章前首先要熟悉Django的大概使用
知道基礎專案結構,會建立模板,會簡單的配置setting,會寫檢視函式,會配置路由

熟悉後臺的同學一定知道資料繫結模式
簡而言之就是挖空填洞
模板的渲染就是說洞已經挖好了,然後渲染就是個填洞的過程

先從簡單的說起

from django.template import Template,Context
    t=Template('hello,{{name}}')
    print t.render(Context({'name':'jack'})

不難理解Tempalte就是模板,挖好洞
Context就是說明哪個資料填哪個洞
然後執行t.render()就是開始填洞
所以輸出

hello,jack

但是如果是渲染一個html的模板呢

1.首先建立模板,這裡我起名為5.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>5</title>
</head>
<body>
    {{ book }}
</body>
</html>

已經在html裡挖好一個名為book的洞了

2.然後要寫一個檢視函式

在app的views.py裡新增

from django.shortcuts import render
def testrender(request):
    return render(request,'5.html',{'book':'Hello Django'})

3.然後配置路由

在url.py裡新增

from myApp.views import *
urlpatterns = [
    ...
    url(r'^testrender/$',testrender),


]

記得匯入app的views,不然會檢測不到testrender檢視函式

4.然後啟動專案

一般情況下輸入http://127.0.0.1:8000/testrender/就可以看到我們渲染好的模板了

如果想渲染表單呢

1.首先新建一個模板我取名為1.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form method="post">

        {{form.as_p}}
        <input type="submit" name="ok">
        {% csrf_token %}
    </form>
</body>
</html>

form.as_p就是模板的洞
一定要加上{% csrf_token %},這樣可以防止惡意post表單

2.然後新建一個表單

在 app的forms.py(沒有的話自己新建)裡新建表單

from django import forms

class Mybook(forms.Form):
    name=forms.CharField()
    author=forms.CharField()
    date=forms.CharField()
    num=forms.IntegerField()

3.然後開始渲染

在app的views.py裡新增檢視函式

from myApp.forms import *
from django.http import  HttpResponse
def book(request):
    if request.method=='POST':
        form=Mybook(request.POST)
        if form.is_valid():
            data=form.cleaned_data
            title=data['name']
        return HttpResponse(title)

    form=Mybook()
    return render(request, '1.html', {'form':form})

首先檢測是不是post方法,不是的話就渲染模板,是的話就檢查form中的資料是否合理,合理的話就返回顯示name這個欄位

基本的渲染方法就是這些

高階的還有設定過濾器標籤,還可以在挖那個洞裡用管道對資料進行轉換,這些就等大家去探索了

相關文章