django的url函式
django 的url()函式使用url()函式用於將檢視函式和url關聯起來, 下面總結學習過程中對url()與檢視函式的引數對應問題在建立的app-name檔案的views.py中,初始內容如下:from django.shortcuts import renderfrom django.http import HttpResponsedef home(request): return render(request, 'home.html') 1 2 3 4 1 2 3 4在templates/home.html:
hellow world!
1 2 3 4 5 6 7 1 2 3 4 5 6 71.最簡單地引數,使用正規表示式的named group作為引數在urls.py中修改urls()url(r'a=(\d+)&b=(\d+)', 'app-name.views.home') 1 1修改views.py:def home(request, a, b): return HttpResponse(str(int(a) + int(b))) 1 2 1 2在瀏覽器中輸入http://localhost:8000/a=8&b=5頁面顯示這裡寫圖片描述使用正規表示式裡的群組時,url()會自動將群組作為引數按順序傳入檢視函式中,所以上述實現過程如此:param1 = 8, param2 = 3home(request, param1, param2)還可以給group 命名, 即為 named group:url(r'^(?P\d+)&(?P\d+)$', 'app-name.views.home') 1 1此時可匹配的url為:http://localhost:8000/1555&16666其餘與上述情況一致需要注意:正規表示式裡的群組個數應該與檢視函式的除了request引數外的其他引數個數相匹配,否則會報錯另外,使用群組來設定引數,理論上可以設定多個引數,但是這種方法很容易出現匹配混亂,在引數較多時,不是最佳的方法2.使用querystring(查詢字串)先來看看查詢字串是什麼http://localhost/?a=3&b=5跟在 ? 後面的就是查詢字串用=表示賦值,用&分隔變數使用查詢字串同樣可以作為引數,不過,不是像使用群組一樣,將引數傳入到home裡面,而是將查詢字串的引數和值以dict的形式儲存在request.GET裡面, 獲取值value的方式有兩種:1.request.GET[key]2.request.GET.get(key) (建議使用第二種)所以要修改views.py:def home(request): a = request.GET.get('a') b = request.GET.get('b') return HttpResponse(str(int(a) + int(b))) 1 2 3 4 1 2 3 4在瀏覽器輸入http://localhost:8000/?a=5&b=3即可顯示同樣的內容注意:如果在瀏覽器裡面輸入http://localhost 或http://localhost/a=5 這樣都是合法的, 但不一定不會報錯.首先,引數預設的話,會給相應的引數賦予預設的預設值,一般就是None其次,如果像上述的views.py裡面的home, 使用預設的查詢字串,回報錯,原因是home裡面,使用了int()函式,這個函式不能接受None型別的引數3.還可以傳如額外引數,以關鍵字引數形式形如urls.py:url(r'^$', 'app-name.views.home', {'a':5, 'b':3}) 1 1views.pydef home(request, a, b): return HttpResponse(str(int(a) + int(b))) 1 2 1 2注意:在url()中傳入的dict的key應該與home的定義的引數一樣一下是錯誤的寫法:url(r'^$', 'app-name.views.home', {'c':5, 'b':3}) 1 14使用群組和關鍵字引數一起用url(r'^a=(\d)$b=(\d)', 'app-name.views.home', {'a':5, 'b':3}) 1 1輸入http://localhost:8000/a=6&b=7瀏覽器會報錯:這裡寫圖片描述原因是引數重複賦值了上述url下, 實現過程如下:param1 = 6, param2 = 7a = 5, b = 3home(request, param1, param2) 還是 home(request, a, b)瀏覽器直譯器無法判斷,所以會報錯使用群組和關鍵字引數混搭時,要注意不要重複賦值下面寫法都是正確的:url(r'a=(\d)'. 'app-name.views.home', {'b':3}) 1 1輸入:http://localhost:8000/a=5這裡寫圖片描述注意:如果這麼寫,又會報錯url(r'^b=(\d)$', 'app-name.views.home', {'a':5}) 1 1輸入: http://localhost/b=3報錯:引數a重複賦值這裡寫圖片描述是不是很奇怪:在正規表示式裡,不是給a賦值呀,是’b=(\d)’原因:注意,b=不是說第一個群組的變數名為b, 只是讓url更容易理解而已, 前面說過,群組是按順序給檢視函式傳入引數的,所以,不管第一個群組的變數名為什麼,都是傳給檢視函式除了reuqest外的第一個引數,所以,上面實際是給引數a傳來兩次值,於是報錯相關文章
- django中的url函式Django函式
- Django:聚合函式Django函式
- Django --URLDjango
- Django中F函式的使用Django函式
- Django(18)聚合函式Django函式
- Django便捷函式shortcutsDjango函式
- Sanic url_for() 方法/函式函式
- django url的分發Django
- 前端常用的小函式(1)—解析url前端函式
- 【6】Django檢視函式Django函式
- django動態urlDjango
- PHP函式之parse_str()和parse_url()函式PHP函式
- Django中 render() 函式的使用方法Django函式
- Django靜態URL配置Django
- 學習PHP中的URL相關操作函式PHP函式
- 06 Django-動態urlDjango
- Django基礎三之檢視函式Django函式
- CodeIgniter框架之url相關函式框架函式
- Django筆記二十五之資料庫函式之日期函式Django筆記資料庫函式
- Django筆記二十七之資料庫函式之文字函式Django筆記資料庫函式
- Laravel Url 使用指南 4-2 使用 Trait 複用 URL 函式LaravelAI函式
- django 的類檢視和函式檢視-雜談Django函式
- Django基礎之二(URL路由)Django路由
- 使用 useRequestURL 組合函式訪問請求URL函式
- Django裡URL配置中name引數的作用Django
- django的url的name引數的意義(轉發)Django
- Django web框架-----url path name詳解DjangoWeb框架
- Django REST framework API 指南(23):返回 URLDjangoRESTFrameworkAPI
- Django筆記二十四之資料庫函式之比較和轉換函式Django筆記資料庫函式
- django模板怎麼配置檢視和urlDjango
- js.函式parseQuery用於解析url查詢引數JS函式
- PHP中urlencode()函式進行URL編碼詳解PHP函式
- [Django REST framework - 序列化元件、source、鉤子函式]DjangoRESTFramework元件函式
- Django - 檢視層 - 檢視函式及快捷方式Django函式
- Django中的函式make_password、set_password和check_passwordDjango函式
- 基於函式計算快速搭建Django Blog部落格函式Django
- Django ModelForm中使用鉤子函式校驗資料DjangoORM函式
- django2 獲取專案中所有urlDjango