Django 是從真實(shí)世界的應(yīng)用中成長(zhǎng)起來(lái)的,它是由 堪薩斯(Kansas)州 Lawrence 城中的一個(gè) 網(wǎng)絡(luò)開(kāi)發(fā)小組編寫(xiě)的。 它誕生于 2003 年秋天,那時(shí) Lawrence Journal-World 報(bào)紙的 程序員 Adrian Holovaty 和 Simon Willison 開(kāi)始用 Python 來(lái)編寫(xiě)程序。 當(dāng)時(shí)他們的 World Online 小組制作并維護(hù)當(dāng)?shù)氐膸讉€(gè)新聞?wù)军c(diǎn), 并在以新聞界特有的快節(jié)奏開(kāi)發(fā)環(huán)境中逐漸發(fā)展。 這些站點(diǎn)包括有 LJWorld.com、Lawrence.com 和 KUsports.com, 記者(或管理層) 要求增加的特征或整個(gè)程序都能在計(jì)劃時(shí)間內(nèi)快速的被建立,這些時(shí)間通常只有幾天 或幾個(gè)小時(shí)。 因此,Adrian 和 Simon 開(kāi)發(fā)了一種節(jié)省時(shí)間的網(wǎng)絡(luò)程序開(kāi)發(fā)框架, 這是在截止時(shí)間前能完成程序的唯一途徑。 2005 年的夏天,當(dāng)這個(gè)框架開(kāi)發(fā)完成時(shí),它已經(jīng)用來(lái)制作了很多個(gè) World Online 的站點(diǎn)。 當(dāng)時(shí) World Online 小組中的 Jacob Kaplan-Moss 決定把這個(gè)框架發(fā)布為一個(gè)開(kāi)源軟件。 從今往后數(shù)年,Django是一個(gè)有著數(shù)以萬(wàn)計(jì)的用戶和貢獻(xiàn)者,在世界廣泛傳播的完善開(kāi)源項(xiàng)目。 原來(lái)的World Online的兩個(gè)開(kāi)發(fā)者(Adrian and Jacob)仍然掌握著Django,但是其發(fā)展方向受社區(qū)團(tuán)隊(duì)的影響更大。 這些歷史都是相關(guān)聯(lián)的,因?yàn)樗齻儙椭忉屃撕苤匾膬牲c(diǎn)。 第一,Django最可愛(ài)的地方。Django?誕生于新聞網(wǎng)站的環(huán)境中,因此它提供很多了特性(如管理后臺(tái)),非常適合內(nèi)容類的網(wǎng)站,如Amazon.com, craigslist.org和washingtonpost.com,這些網(wǎng)站提供動(dòng)態(tài)的,數(shù)據(jù)庫(kù)驅(qū)動(dòng)的信息。 (不要看到這就感到沮喪,盡管Django擅長(zhǎng)于動(dòng)態(tài)內(nèi)容管理系統(tǒng), 但并不表示Django主要的目的就是用來(lái)創(chuàng)建動(dòng)態(tài)內(nèi)容的網(wǎng)站。 某些方面特別高效與其他方面不高效是有區(qū)別的,Django在其他方面也同樣高效。) 第二,Django的起源造就了它的開(kāi)源社區(qū)的文化。 因?yàn)镈jango來(lái)自于真實(shí)世界中的代碼,而不是 來(lái)自于一個(gè)科研項(xiàng)目或者商業(yè)產(chǎn)品,她主要集中力量來(lái)解決Web開(kāi)發(fā)中遇到的問(wèn)題,同樣 也是Django的開(kāi)發(fā)者經(jīng)常遇到的問(wèn)題。 這樣,Django每天在現(xiàn)有的基礎(chǔ)上進(jìn)步。 框架的開(kāi)發(fā)者對(duì)于讓開(kāi)發(fā)人員節(jié)省時(shí)間,編寫(xiě)更加容易維護(hù)的程序,同時(shí)保證程序運(yùn)行的效率具有極大的興趣。 無(wú)他,開(kāi)發(fā)者動(dòng)力來(lái)源于自己的目標(biāo):節(jié)省時(shí)間,快樂(lè)工作。 (坦率地講,他們使用了自己公司的產(chǎn)品。) ? ? 安裝: ? 自動(dòng)化安裝 #更新依賴庫(kù) pip install --upgrade setuptools #安裝指定的版本 pip?install?Django==2.0.4 ? ? 文件式安裝 進(jìn)入到Django文件安裝目錄,輸入命令: python setup.py install ? ? 安裝后打印版本號(hào) python -m django –version ? ? ? 生成Django項(xiàng)目 django-admin startproject mysite 注意:有的django-admin找不到問(wèn)題,需要配置環(huán)境變量 ? ? 啟動(dòng)服務(wù) python manage.py runserver ? ? 本地化中間件 'django.mididdleware.locale.LocaleMiddleware', ? ? 路由包括 精準(zhǔn)路由和正則路由 #定義首頁(yè) 首頁(yè)留空 第二個(gè)參數(shù) 指定路由方法 ????path('',d1.index), ????#再定義一個(gè)路由 ????path('test',d1.test), ????#定義一個(gè)重定向頁(yè)面 ????path('123',d1.re_url), ????#使用多個(gè)網(wǎng)址來(lái)指向同一個(gè)路由方法 ????path('456',d1.re_url), ????#定義存儲(chǔ)cookie的路由 ????path('save_cookie',d1.save_cookie), ????#定義獲取cookie的路由 ????path('get_cookie',d1.get_cookie), ????#定義刪除cookie的路由 ????path('del_cookie',d1.del_cookie), ????#定義一個(gè)正則路由,可以使用\d數(shù)字 ????#常用元字符 .匹配所有 \d數(shù)字 \D非數(shù)字 \w 字母數(shù)字_ ????#如果在正則路由內(nèi),使用()分組,那么django會(huì)認(rèn)為進(jìn)行路由傳參 ????# re_path('^test-\d -.*$',d1.test_re) re_path('^test-(\d )-(.*)$',d1.test_re) ? ? ? Cookie 操作 #定義設(shè)置cookie(存儲(chǔ)) def save_cookie(request): ????#定義回應(yīng) ????response = HttpResponse("存儲(chǔ)cookie ok") ????#定義過(guò)期時(shí)間 ????expires = datetime(year=2019,month=11,day=20,hour=15,minute=5,second=0) ????#轉(zhuǎn)儲(chǔ)為django內(nèi)置時(shí)間 ????expires = make_aware(expires) ????#進(jìn)行存儲(chǔ)動(dòng)作 ????response.set_cookie("username","jack",expires=expires) ????#將回應(yīng)對(duì)象返回 ????return response ? #定義獲取cookie(?。?/p> def get_cookie(request): ????#定義變量獲取cookies屬性 ????cookies = request.COOKIES ????#從cookies通過(guò)key獲取value ????username = cookies.get("username","未拿到用戶名") ????#將用戶名返回 ????return HttpResponse(username) ? ? #定義刪除cookie方法 def del_cookie(request): ????#定義response對(duì)象 ????response = HttpResponse("刪除cookie成功") ????#調(diào)用delete_cookie()方法來(lái)刪除cookie ????response.delete_cookie("username") ????#返回response ????return response ? ? ? ? ? Django 模板 采用了 jinja2模板 但是與flask有一定的出入需要注意 ? #導(dǎo)入模板解析庫(kù) from django.shortcuts import render ? #模板傳值 return render(request,'d2_index.html',{'test_str':test_str,'test_int':test_int,'test_list':test_list,'test_dict':test_dict,'content':content,'dt':dt}) ? {# 模板語(yǔ)法輸出 #} {{ test_str }} ???? {# 加法運(yùn)算 通過(guò)調(diào)用內(nèi)置過(guò)濾器來(lái)實(shí)現(xiàn)加法運(yùn)算 #} ? {{ test_int | add:-10 }} ? {# ?模板輸出list #} {{ test_list }} {{ test_list.2 }} ? {% for item in test_list %} ?{{ item }} ? {# 打印索引 counter 從1開(kāi)始的計(jì)數(shù)器 #} ????????{{ forloop.counter }} ????????{# 打印數(shù)組索引 #} ????????{{ forloop.counter0 }} ????????{# ?倒序索引 #} ????????{{ forloop.revcounter }} ? ? ? ?? ????{% endfor %} ? ????{# 循環(huán)嵌套輸出 #} ????{% for item in test_dict %} ????????????{# 取首位和末尾 #} ????????????姓名:{{ item.name | first }} {{ item.name | last }} ? ?年齡:{{ item.age }} ????{% endfor %} ? ? ? ????{# 大小寫(xiě)互轉(zhuǎn) #} ????{{ 'jack' | upper }} ????{{ 'ROSE' | lower }} ? ????{# 鏈?zhǔn)秸{(diào)用 #} ????{{ 'jack' | first | upper }} ? ????{# 返回長(zhǎng)度 #} ????{{ '123456' | length }} ? ????{# 截?cái)嗖僮?#} ????截?cái)嘧址僮鱷{ content | truncatechars:20 }} ????截?cái)鄦卧~操作{{ content | truncatewords:3 }} ? ????{# 格式化日期 #} ? ? {{ dt | date:"Y-m-d H:i:s" }} ? ? ? ? ? ? Cookie簡(jiǎn)易操作 #定義回應(yīng) ????response = HttpResponse("存儲(chǔ)成功") ????#第三個(gè)參數(shù)也可以傳max_age,單位是秒 ????response.set_cookie("email",p1,max_age=10) ????#返回回應(yīng) ????return response ? 來(lái)源:http://www./content-4-113651.html |
|
來(lái)自: 印度阿三17 > 《開(kāi)發(fā)》