1. 程式人生 > >Django2.0:【Django2.0教程】08.常用的模版標籤和過濾器 視訊學習筆記

Django2.0:【Django2.0教程】08.常用的模版標籤和過濾器 視訊學習筆記

繼續搭建blog

blog/views.py

from django.shortcuts import render_to_response, get_object_or_404
from .models import Blog, BlogType

def blog_list(request):
    context = {}
    context['blogs'] = Blog.objects.all()
    # context['blogs_count'] = Blog.objects.all().count()
    return render_to_response('blog_list.html'
, context) def blog_detail(request, blog_pk): context = {} context['blog'] = get_object_or_404(Blog, pk=blog_pk) return render_to_response('blog_detail.html', context) def blogs_with_type(request, blog_type_pk): context = {} blog_type = get_object_or_404(BlogType, pk=blog_type_pk) context['blogs'
] = Blog.objects.filter(blog_type=blog_type) context['blog_type'] = blog_type return render_to_response('blogs_with_type.html', context)

blog/urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('<int:blog_pk>', views.blog_detail, name='blog_detail'),
    path('type/<int:blog_type_pk>'
, views.blogs_with_type, name='blogs_with_type',) ]

blog/templates/blog_detail.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>{{ blog.title }}</title>
</head>
<body>
    <div>
        <a href="{% url 'home' %}">
            <h3>個人部落格網站</h3>
        </a>
        <hr>
    </div>
    <h3>{{ blog.title }}</h3>
    <p>作者:{{ blog.author }}</p>
    <p>發表日期:{{ blog.created_time|date:"Y-m-d" }}</p>
    <p>分類:
        <a href='{% url 'blogs_with_type' blog.blog_type.pk %}'>
            {{ blog.blog_type }}
        </a>
    </p>
    <p>{{ blog.content }}</p>
</body>
</html>

blog/templates/blog_list.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>我的網站</title>
</head>
<body>
    <div>
        <a href="{% url 'home' %}">
            <h3>個人部落格網站</h3>
        </a>
    </div>
    <hr>
    {% for blog in blogs %}
        <a href="{% url 'blog_detail' blog.pk %}">
            <h3>{{ blog.title }}</h3>
        </a>
        <p>{{ blog.content|truncatechars:30 }}</p>
    {% empty %}
        <p>---暫無博文,敬請期待---</p>
    {% endfor %}
    <p>一共有{{ blogs|length }} 篇博文</p>
</body>
</html>

blog/templates/blogs_with_type.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>{{ blog_type.type_name }}</title>
</head>
<body>
    <div>
        <a href="{% url 'home' %}">
            <h3>個人部落格網站</h3>
        </a>
    </div>
    <hr>
    <h3>{{ blog_type.type_name }}</h3>
    {% for blog in blogs %}
        <a href="{% url 'blog_detail' blog.pk %}">
            <h3>{{ blog.title }}</h3>
        </a>
        <p>{{ blog.content|truncatechars:30 }}</p>
        {# 這是註釋 #}
    {% empty %}
        <p>---暫無博文,敬請期待---</p>
    {% endfor %}
    <p>一共有{{ blogs|length }} 篇博文</p>
</body>
</html>

mysite/urls.py

from django.contrib import admin
from django.urls import path, include
from blog.views import blog_list

urlpatterns = [
    path('', blog_list, name='home'),
    path('admin/', admin.site.urls),
    path('blog/', include('blog.urls')),
]

相關推薦

Django2.0Django2.0教程08.常用模版標籤過濾器 視訊學習筆記

繼續搭建blog blog/views.py from django.shortcuts import render_to_response, get_object_or_404 from .models import Blog, BlogType d

Django2.0Django2.0教程11.CSS框架協助前端佈局 視訊學習筆記

將下載的bootstrap解壓並重命名為bootstrap-3.3.7,移動至static/下,這裡只用到css/bootstrap.min.css和css/bootstrap.min.css.map、js/bootstrap.min.js和全部font

Django2.0Django2.0教程02.入門儀式Hello World 視訊學習筆記

進入到需要放置專案的路徑,使用如下命令建立專案: $ django-admin startproject mysite 這裡,mysite為專案名稱,也可以是其他的名字。進入到mysite目錄之後,可以看到目錄結構如下: . ├── mana

Django2.0Django2.0教程14.優化分頁展示 視訊學習筆記

當前頁高亮 修改blog/templates/blog/blog_list.html: ... <ul class="pagination"> <li> {# 上一頁 #} {% if pa

Django2.0Django2.0教程04.使用模版顯示內容 視訊學習筆記

檢視文章頁面:唯一標示id article/migrations/0001_initial.py的內容如下: # Generated by Django 2.0.5 on 2018-05-11 06:54 from django.db import m

Django2.0Django2.0教程13.分頁shell命令列模式 視訊學習筆記

快速新增博文:Shell命令列模式 $ python manage.py shell 匯入Blog模型: >>> from blog.models import Blog 驗證是否成功引用: >>&

Qt OpenGL教程08混合

第08課:混合 (參照NeHe) 這次教程中,我們將在紋理對映的基礎上加上混合,使它看起來具有透明的效果,當然解釋它不是那麼容易但程式碼並不難,希望你喜歡它。 OpenGL中的絕大多數特效都與某些型別的(色彩)混合有關。混色的定義為,將某個畫素的顏色和已繪製在螢幕上與其對應

Nosql-安裝教程Linux環境下安裝部署Redis步驟

Linux環境下安裝和部署Redis步驟如下: 1.    下載安裝包 cd /var/lamp/ 2.編譯源程式 tar xzf redis-3.2.8.tar.gz cd redis-3.2.8 make cd src && make install

KMP字符串KMP字符串匹配算法 學習筆記

出現 調用 隨機 rri 形象 再看 aaaaa scan i+1 一、簡介 KMP是由Knuth、Morris和Prat發明的字符串匹配算法,它的時間復雜度是均攤\(O(n+m)\)。其實用Hash也可以做到線性,只不過Hash存在極其微小的難以避免的沖突。於是就

專欄 - Android應用安全防護逆向分析學習筆記

Android應用安全防護和逆向分析學習筆記 這裡給大家分享的是《Android應用安全防護和逆向分析》的學習筆記,個人認為移動端的安全也是不可忽視的,我們Android工程師應該重視Android的安全這一塊,希望這個專欄的部落

Django入門教程(五)自定義模板標籤過濾器

1、建立專案 django-admin startproject djangocustomtagandfilter cd djangocustomtagandfilter python manage.py startapp customtagfilter 2、在

給初學者的RxJava2.0教程(二)執行緒控制

前言 上一節教程講解了最基本的RxJava2的使用, 在本節中, 我們將學習RxJava強大的執行緒控制. 正題 還是以之前的例子, 兩根水管: 正常情況下, 上游和下游是工作在同一個執行緒中的, 也就是說上游在哪個執行緒發事件,

React 實戰教程0到1 構建 github star管理工具

前言 在日常使用github中,除了利用git進行專案版本控制之外,最多的用處就是遊覽各式的專案,在看到一些有趣或者有用的專案之後,我們通常就會順手star,目的是日後再看。但是當我們star了許多專案之後,回過頭想找一個的專案就會發現,很難在短時間內找到它,官方也並沒有提供很好的管理我們的star專案的功

ROM修改教程新增高階電源重啟選單(安卓4.0.4官方ROM)

準備工作: 電腦上安裝好JDK、下載smali和baksmali、下載apktools、要修改的ROM、adb工具(可選) 注:由於本教程面向的物件為有一定ROM修改基礎的兄弟,所以對於如何使用電腦,如何使用CMD以及上述工具的具體用法等等都不在本貼的討論範圍內,本文將僅講述如何新增高階重啟選單 1、從要

Unity3D基礎教程給初學者看的Unity教程(零)如何學習Unity3D

cos 詳解 component lock index unity3d遊戲 design 技術棧 log 【Unity3D基礎教程】給初學者看的Unity教程(零):如何學習Unity3D http://www.cnblogs.com/neverdie/p/How_To_

Qt OpenGL教程25變形從檔案中載入3D物體

第25課:變形和從檔案中載入3D物體 (參照NeHe) 這次教程中,我們將學會如何從檔案中載入3D模型,並且平滑的從一個模型變形為另一個模型。在這一課裡,我們將介紹如何實現模型的變形過程,這將會是效果很棒的一課! 程式執行時效果如下: 下面進入教程: 我們這次將在第

Unity3D基礎教程給初學者看的Unity教程(六)理解Unity的新GUI系統(UGUI)

理解UGUI的基礎架構 UGUI是Unity在4.6中引入的新的GUI系統,與傳統的中介軟體NGUI相比,這套新GUI系統有幾個核心亮點: 放棄了Atlas的概念,使用Packing Tag的方式來進行圖集的規劃 放棄了depth來確定UI顯示層級的概念,使用Hierarchy的SiblingIndex

Unity3D基礎教程給初學者看的Unity教程(二)所有指令碼元件的基類 -- MonoBehaviour的前世今生

引子 上一次我們講了GameObject,Compoent,Time,Input,Physics,其中Time,Input,Physics都是Unity中的全域性變數。GameObject是遊戲中的基本物件。GameObject是由Component組合而成的,GameObject本身必須有

Unity3D基礎教程給初學者看的Unity教程(五)詳解Unity3D中的協程(Coroutine)

為什麼需要協程 在遊戲中有許多過程(Process)需要花費多個邏輯幀去計算。 你會遇到“密集”的流程,比如說尋路,尋路計算量非常大,所以我們通常會把它分割到不同的邏輯幀去進行計算,以免影響遊戲的幀率。 你會遇到“稀疏”的流程,比如說遊戲中的觸發器,這種觸發器大多數時候什麼也不做,但

Unity3D基礎教程給初學者看的Unity教程(三)通過製作Flappy Bird瞭解Native 2D中的Sprite,Animation

引子 上一次我們講了MonoBehaviour的前世今生,瞭解了遊戲中的每一個GameObjec都是由指令碼控制的,這一次我們開始將Unity中Native 2D中的Sprite,並且使用Animation來讓Sprite動起來。 在接下來的幾篇部落格裡,我會通過做一個Flappy Bird來講解