国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Django-03.靜態(tài)文件與模板詳解

ls0609 / 2447人閱讀

摘要:通過使用來給子模板開放接口。必須是模板中的第一個出現(xiàn)的標簽。如果出現(xiàn)重復代碼,就應該考慮使用模板。盡可能多的定義,方便子模板實現(xiàn)更細的需求。

1、原始渲染

在django_lesson文件夾下新建一個django工程lesson2
(新建工程的詳情請見Django-01、初識Django和搭建Django helloworld)
views.py

# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.shortcuts import render
from django.views import View
from django.http import HttpResponse
# Create your views here.

class CommonRenderHtml(View):
    def get(self, request):
        meg = " 這是一個原始的模版渲染方式 "
        return HttpResponse(meg)

urls.py

from django.conf.urls import url
from django.contrib import admin
from hello import views
urlpatterns = [
    url(r"^admin/", admin.site.urls),
    url(r"^common/$", views.CommonRenderHtml.as_view()),
]

效果如圖所示



2、render渲染

我們還可以直接將html文件輸出到瀏覽器
在template下新建html文件




    
    hello


    hello
    world


在urls.py中加入以下路由

url(r"^hellopage/$", views.HelloPageHtml.as_view()),

在views.py中加入以下視圖類

class HelloPageHtml(View):
    def get(self, request):
        return render(request, "hello_page.html")  # 從template文件夾開始

效果如下


3.get_template渲染

views.py

#導入模塊
from django.template.loader import get_template
#添加視圖
class LoginHtml(View):
    def get(self, request):
        t = get_template("login.html")
        return HttpResponse(t.render())  # 其中t.render()返回的是字符串

login.html




    
    登錄


    
帳號:
密碼:

urls.py

# 添加路由
url(r"^login/$", views.LoginHtml.as_view())

瀏覽器地址欄輸入http://ip:8000/login/
ip表示ip地址

4.動態(tài)渲染參數(shù)

views.py

class RenderParam(View):
    def get(self, request):
        message = "尊敬的用戶您好!"
        return render(request, "hello.html", context={"msg": message})    # 這里如果字典內容太多 我們可以用 context=locals()將當前能訪問的所有局部變量轉換成字典并賦給context context也可以不寫
        

urls.py

url(r"^renderparam/$", views.RenderParam.as_view())

hello.html




    
    hello


    {{ msg }}





5.模板標簽

標簽語法:{% 標簽名稱 %}{% 結束標簽名稱 %}例: {%tag%}{%endtag%}
if/elif/else:可以使用and/or/in/not/==/!=/<=/>=,來進行判斷。

{% if message %}
    {{ message }}
{% endif %}
{% if now %}
當前時間: {{ now|date:"Y-m-d H:i:s" }}
{% endif %}

for…in…:跟python中的for…in…是一樣的用法

{% for m in modules %}
{{ m }}
{% end %}
{% for day in days %}
    今天是{{ day }}
{% endfor %}
------for 循環(huán) 字典 帶items-------
{% for day, thing in days_thing.items %}
    今天是{{ day }}, 我們{{ thing }}
{% endfor %}

forloop.counter:當前迭代的次數(shù),下標從1開始。
forloop.counter0:當前迭代的次數(shù),下標從0開始。
forloop.first:返回bool類型,如果是第一次迭代,返回true,否則返回false。
forloop.last:返回bool類型,如果是最后一次迭代,返回True,否則返回False。

{% for day in days %}
    {% if forloop.first %}
        這是這一個循環(huán)的第一個
{% endif %} {{ forloop.counter }}今天是{{ day }}
{% if forloop.last %} 這是一個循環(huán)的最后一個
{% endif %} {% endfor %}
6.過濾器

作用:對變量進行過濾。在真正渲染出來之前,過濾器會根據(jù)功能處理好變量,然后得出結果后再替換掉原來的變量展示出來。
語法:{{greeting|lower}}
變量和過濾器中間使用管道符號”|”進行使用。
可以通過管道符號進行鏈式調用,比如實現(xiàn)一個功能,先把所有字符變成小寫,把第一個字符轉換成大寫,代碼如下:
{{message|lower|capfirst}}
過濾器可以使用參數(shù),在過濾器名稱后面使用冒號”:”再加上參數(shù),比如要把一個字符串中所有的空格去掉,則可以使用cut過濾器,代碼如下

{{message|cut:" "}}
ps: 使用參數(shù)的時候,冒號和參數(shù)之間不能有任何空格,一定要緊挨著。


{{ hello|upper }} {{ hello|lower }} {{ hello|capfirst }} ------ 使用過濾器的參數(shù)時,你不能有空格 ------- {{ hello|cut:" " }}

R和time過濾器格式
獲取當前時間
import datetime
time_now = datetime.datetime.now()


------- date過濾器--------
{{ time_now|date:"Y-m-d H:i:s" }}

示例:
template.html




    
    Template


    {% if day1 == "saturday" %}
        今天星期六 出去浪
    {% endif %}

    
{% if day2 == "saturday" %} 今天星期六 出去浪哦 {% elif day2 == "sunday" %} 今天星期天 繼續(xù)出去浪 {% else %} 工作日 努力工作 一切為了周末浪 {% endif %}
{% for i, j in week.items %} {% if forloop.first %}
假裝我是每周的第一天 {% endif %}
{{ forloop.counter }}.今天是{{ j }}({{ i }}) {% if forloop.last %}
假裝我是每周的最后一天 {% endif %} {% endfor %}

{{ greet|upper }}
{{ greet|lower }}
{{ greet|capfirst }}
{{ greet|cut:" "}}

{{ time_now }}
{{ time_now|date:"Y-m-d H:i:s" }}

views.py添加以下視圖類

class TemplateTag(View):
    def get(self, request):
        day1 = "saturday"
        day2 = "monday"
        week = {
            "monday": "星期一",
            "tuesday": "星期二",
            "wednesday": "星期三",
            "thursday": "星期四",
            "friday": "星期五",
            "saturday": "星期六",
            "sunday": "星期天"
        }
        greet = "good morning everybody, today is a nice day!"
        import datetime
        time_now = datetime.datetime.now()
        return render(request, "template.html", locals())

urls.py添加路由

 url(r"^template/$", views.TemplateTag.as_view())

7.模板繼承

模板繼承使用extends標簽實現(xiàn)。通過使用block來給子模板開放接口。
extends必須是模板中的第一個出現(xiàn)的標簽。
子模板中的所有內容,必須出現(xiàn)在父模板定義好的block中,否則django將不會渲染。
如果出現(xiàn)重復代碼,就應該考慮使用模板。盡可能多的定義block,方便子模板實現(xiàn)更細的需求。

include另一個模板
{% include "menu.html" %}

修改hello_page.html




    
    hello



    hello
    world
    {% block content %}
    {% endblock content %}

    {% block text %}
    {% endblock text %}
    {% include "login.html" %}




在template文件夾下添加一個extends.html文件

{% extends "hello_page.html" %}
{% block js %}
    document.write("
hello") {% endblock js %} {% block content %}
這是個繼承了hello_page.html的頁面
{% endblock %}

8.模版include

在hello_page.html的body末尾加上以下代碼

{% include "login.html" %}

在瀏覽器輸入路由 /hellopage



注釋標簽
{#被注釋的內容#}:將中間的內容注釋掉。只能單行注釋。
{% comment %}被注釋的內容{% endcomment %}:可以多行注釋。

9.附錄:

html鏈接的相對路徑與絕對路徑
絕對路徑
完整的一個路徑就是絕對路徑,即包含schema://host[:port#]/path/.../?query-string
例:http://news.sina.com.cn/world/
相對路徑
第一個字符為斜杠/,
例:“/hello”, 這種會自動幫你添加你的協(xié)議名+域名+端口, 假設你的前一節(jié)為http://www.baidu.com:8000, 系統(tǒng)會自動匹配為"http://www.baidu.com:8000/hello"
我們實際情況中一般使用這種

第一個字符不帶斜杠
例:“hello”, 這種會在當前url中path段往后添加,假設你當前路徑http://www.baidu.com:8000/hello, 系統(tǒng)會自動匹配為“http://www.baidu.com:8000/hello/hello, ”

關于settings.py 文件中template的解釋

TEMPLATES = [
    {
        # 引擎,就是django自帶的模版渲染模版
        "BACKEND": "django.template.backends.django.DjangoTemplates",
        # 這個配置就是代表html文件存在目錄
        # 該路徑是一個絕對路徑
        "DIRS": [os.path.join(BASE_DIR, "templates")]
        ,
        # app內部的template是否啟用
        # 這個是為了兼容老版本所用,我們默認為True就可以了。
        "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",
            ],
        },
    },
]

本文章代碼
urls.py

from django.conf.urls import url
from django.contrib import admin
from hello import views
urlpatterns = [
    url(r"^admin/", admin.site.urls),
    url(r"^common/$", views.CommonRenderHtml.as_view()),
    url(r"^hellopage/$", views.HelloPageHtml.as_view()),
    url(r"^login/$", views.LoginHtml.as_view()),
    url(r"^renderparam/$", views.RenderParam.as_view()),
    url(r"^template/$", views.TemplateTag.as_view()),
    url(r"^extends/$", views.ExtendHtml.as_view())
]

views.py

# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.shortcuts import render
from django.views import View
from django.http import HttpResponse
from django.template.loader import get_template
# Create your views here.


class CommonRenderHtml(View):
    def get(self, request):
        meg = " 這是一個原始的模版渲染方式 "
        return HttpResponse(meg)


class HelloPageHtml(View):
    def get(self, request):
        return render(request, "hello_page.html")


class LoginHtml(View):
    def get(self, request):
        t = get_template("login.html")
        return HttpResponse(t.render())


class RenderParam(View):
    def get(self, request):
        message = "尊敬的用戶您好!"
        return render(request, "hello.html", context={"msg": message})


class TemplateTag(View):
    def get(self, request):
        day1 = "saturday"
        day2 = "monday"
        week = {
            "monday": "星期一",
            "tuesday": "星期二",
            "wednesday": "星期三",
            "thursday": "星期四",
            "friday": "星期五",
            "saturday": "星期六",
            "sunday": "星期天"
        }
        greet = "good morning everybody, today is a nice day!"
        import datetime
        time_now = datetime.datetime.now()
        return render(request, "template.html", locals())


class ExtendHtml(View):
    def get(self, request):
        return render(request, "extends.html")

login.html




    
    登錄


    
帳號:
密碼:

template.html




    
    Template


    {% if day1 == "saturday" %}
        今天星期六 出去浪
    {% endif %}

    
{% if day2 == "saturday" %} 今天星期六 出去浪哦 {% elif day2 == "sunday" %} 今天星期天 繼續(xù)出去浪 {% else %} 工作日 努力工作 一切為了周末浪 {% endif %}
{% for i, j in week.items %} {% if forloop.first %}
假裝我是每周的第一天 {% endif %}
{{ forloop.counter }}.今天是{{ j }}({{ i }}) {% if forloop.last %}
假裝我是每周的最后一天 {% endif %} {% endfor %}

{{ greet|upper }}
{{ greet|lower }}
{{ greet|capfirst }}
{{ greet|cut:" "}}

{{ time_now }}
{{ time_now|date:"Y-m-d H:i:s" }}

extend.html

{% extends "hello_page.html" %}
{% block js %}
    document.write("
hello") {% endblock js %} {% block content %}
這是個繼承了hello_page.html的頁面
{% endblock %}

hello.html




    
    hello


    {{ msg }}

hello_page.html




    
    hello



    hello
    world
    {% block content %}
    {% endblock content %}

    {% block text %}
    {% endblock text %}
    {% include "login.html" %}




文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/41463.html

相關文章

  • vue-cli 中使用 Mockjs 詳解

    摘要:想到函數(shù)有延遲網(wǎng)絡請求稀釋事件延遲執(zhí)行的效果,于是將模板函數(shù)用包裹起來,如下結果出現(xiàn)有意思的事情當請求比較頻繁,在延遲時間內,本次請求得到的響應數(shù)據(jù)是上次請求的結果。 vue-cli 中使用 Mockjs 詳解 背景 前端在早期jQuery時代時,前端功能和后端工程基本上都是合在一起,典型的就是常見的maven工程下面的webapp目錄包含前端各類靜態(tài)資源文件。這個時候,我們總是會遇...

    developerworks 評論0 收藏0
  • 微信小程序學習wepy框架的使用詳解

    摘要:,至此咱們的微信小程序的簡單使用及了解算是分享完了,畢竟個人也是道行有限,沒有鉆研太深,這些只是本人在實際項目開發(fā)過程中用到和總結的經(jīng)驗,有太多不足或不對的地方,希望大家多多給予指出與改正,咱們一起來共同學習與進步 微信小程序是一種不需要下載安裝即可使用的應用,在國內它在企業(yè)推廣中的受歡迎度以及就這兩年的使用及普及熱度,然而就是因為它的備受歡迎度以及越來越被企業(yè)所重視,也就形成了咱們開...

    sf190404 評論0 收藏0
  • 微信小程序學習wepy框架的使用詳解

    摘要:,至此咱們的微信小程序的簡單使用及了解算是分享完了,畢竟個人也是道行有限,沒有鉆研太深,這些只是本人在實際項目開發(fā)過程中用到和總結的經(jīng)驗,有太多不足或不對的地方,希望大家多多給予指出與改正,咱們一起來共同學習與進步 微信小程序是一種不需要下載安裝即可使用的應用,在國內它在企業(yè)推廣中的受歡迎度以及就這兩年的使用及普及熱度,然而就是因為它的備受歡迎度以及越來越被企業(yè)所重視,也就形成了咱們開...

    stormjun 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<