django重點之url傳遞一個默認參數
可以利用這個特性,讓2個URL映射一個函數,但是返回2個不同的HTML
url(r'default_param1', views.def_param,),
url(r'default_param2', views.def_param, {"index": "index.html"}),
settigs.py:增加STATICFILES_DIRS靜態資源路徑配置,名稱為創建的文件夾名稱
'DIRS': [os.path.join(BASE_DIR, 'templates')], # 設置templates的路徑為Django以前版本 # 'DIRS': [], # 注釋掉該行,此為Django 2.0.1最新版本 # 'django.middleware.csrf.CsrfViewMiddleware', ...省略默認配置 STATIC_URL = '/static/' TEMPLATE_DIRS = (os.path.join(BASE_DIR, 'templates'),) # 原配置 # 靜態資源文件 STATICFILES_DIRS = (os.path.join(BASE_DIR, "statics"),) # 現添加的配置,這里是元組,注意逗號
templates/*.html
無
mysite2/urls.py
from django.contrib import admin from django.urls import path from blog import views from django.conf.urls import url # URL值默認參數類型 urlpatterns = [ url(r'default_param', views.def_param, {"hello": "world"}), # 將路徑名跟函數進行映射 ]
views.py
from django.shortcuts import render, HttpResponse import datetime # 默認URL之參數類型,需要形參接收默認參數,形參名必須跟URL里面的一樣 # def default_param(request, name): # 報錯 default_param() got an unexpected keyword argument 'name' def def_param(request, hello): # 形參名稱必須跟URL里面的一致 # return HttpResponse("URL值默認參數之hello參數".encode("gbk"), hello)# 默認返回的是一個字符串的拼接 return HttpResponse(hello) # 返回值: world
頁面顯示:
注意:
如果參數名稱重復,則默認的會覆蓋前面的參數值[因為后面的參數覆蓋前面]
# URL值默認參數類型[參數覆蓋問題]: url(r'^hello/[0-9]{4}/', views.def_param, {"hello": "world"}),