Django學習(二) 之 模板的使用

久曲健發表於2023-12-04

寫在前面

昨晚應該是睡的最好一天吧,最近一個月睡眠好差,睡不著不說,而且半夜總醒,搞的我第二天就會超沒精神。

昨天下午去姐姐家,我剛進屋,小外甥直接就問我說:

老舅,你都很長時間沒來啦,**(前女友)哪去了, 我們都好久沒出溜溜了!

我頓了下說,她不喜歡我們了,等以後天暖和,我們再去溜溜。

才發現,忘掉一個人真的很難,明知道沒結果,還是沒法輕易做到波瀾不驚,不去想念。

模板的使用

1、檢視與html頁面

檢視: 瀏覽器視窗展示出來的頁面內容,就是檢視。
html頁面: 在頁面上展示出的純文字內容,開啟的瀏覽器頁面,就是html頁面

2、建立應用

python manage.py startapp mycontent

3、配置setting

setting.py檔案中,找到INSTALLED_APPS,並在最後一行新增如下內容:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'mycontent',
]

4、新增模板templates

在新建的應用下建立templates模板資料夾,在模板下建立content.html,程式碼如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>content demo</title>
</head>
<body>
<h3>this is a content</h3>
</body>
</html>

5、url與檢視繫結

接下來,需要將htmlurl繫結,啥意思,就是你訪問url連線可以看到你剛才的html檔案內容。
我們需要在mycontent/views.py裡寫檢視函式新增如下程式碼:

from django.shortcuts import render

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


# Create your views here.

def index(request):
    return HttpResponse("Hello world !  django ~~")


def my_content(request):
    return render(request, 'content.html')

django_project/urls.py裡新增url訪問路徑,示例程式碼如下:

from django.conf.urls import url

from mycontent import views

urlpatterns = [
    url('^$', views.index),
    url('^my_content', views.my_content())
]


訪問http://127.0.0.1:8000/my_content可以看到效果如下:

6、urls.py配置規則

主要有三個:path、re_path、url

  • path 只能絕對匹配路徑地址,不支援正則匹配
  • re_path 支援正則匹配,django 1.x版本常用
  • url 支援正則匹配,實際上就是return re_path, django2.x版本推薦

path()re_path()原始碼看,path()的匹配規則是RoutePatternre_path()匹配規則是RegexPattern

path = partial(_path, Pattern=RoutePattern)
re_path = partial(_path, Pattern=RegexPattern)

url()原始碼,也是使用的re_path()

def url(regex, view, kwargs=None, name=None):
    return re_path(regex, view, kwargs, name)

7、動態url的處理

沿用博主的案例吧,就是分頁跳轉的例子,不能動態寫死,只需要用正規表示式匹配數字即可,匹配任意數字,可以用正則\d+匹配,如下所示:

url('^pagehelper=\d+$', views.pagehelper)

模擬場景就是,傳入非數字型別引數返回404 Not Found,在mycontent/views.py修改程式碼如下:

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


# Create your views here.

def index(request):
    return HttpResponse("Hello world !  django ~~")


def my_content(request):
    return render(request, 'content.html')

def pagehelper(request,num):
    try:
        num=int(num)
        return render(request, 'content.html')
    except:
        raise Http404



django_project/urls.py裡新增url訪問路徑,示例程式碼如下:

from django.conf.urls import url
from django.urls import re_path, path

from mycontent import views

urlpatterns = [
    path("index/", views.index),
    re_path('^$', views.index),
    url('^$', views.index),
    url('^my_content/$', views.my_content),
    url('^my_content/page=(\d+)$', views.pagehelper),
]

效果:

這個報錯,主要是因為Django設定檔案setting.py裡面有個引數 DEBUG = True,將其更改為FalseDjango將顯示標準的404頁面。

預設顯示如下:

知識點:

  • DEBUG=True:表示處於開發階段,預設為True
  • DEBUG = False:表示開發完成正式釋出產品上線
  • ALLOWED_HOSTS:域名訪問許可權,設定可以訪問的域名,預設值為空\[], 只允許localhost127.0.0.1在瀏覽器上訪問。
  • 修改DEBUG = False後,,必須重新啟動服務,同時需要加個ALLOWED_HOSTS 地址,如果想讓所以的域名都能訪問,可以設定為:ALLOWED_HOSTS = ["*"]
  • 修改後使用如下命令重啟:python manage.py runserver

效果如下:

寫在最後

一段感情開始容易,結束卻很難,它不是今天和明天的一刀切,分開了就是兩條路,它是過往習慣的終結,是愛過但也不再愛的承認,是一個人面對未知的勇氣,是從此一別兩寬、各生歡喜。

如果可以,我也想這麼釋然,放過自己,不再這麼內耗自己了。