生活随笔
收集整理的這篇文章主要介紹了
Django入门 -- 框架操作基本流程
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
-- 入門
| 1 2 3 4 5 6 7 8 9 | #?Django開發(fā)流程: #?1.創(chuàng)建虛擬環(huán)境; #?2.安裝django; #?3.創(chuàng)建項(xiàng)目; #?4.創(chuàng)建應(yīng)用; #?5.在models.py中定義模型類,為視圖提供數(shù)據(jù); #?6.定義視圖,處理瀏覽器請求 #?7.配置URL #?8.創(chuàng)建模板,呈現(xiàn)數(shù)據(jù) |
-- 虛擬環(huán)境
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | #?針對python不同項(xiàng)目,而對應(yīng)安裝的一堆包的集合; --?ubuntu中安裝虛擬環(huán)境的命令(安裝兩個虛擬環(huán)境包,第二個是簡易化操作) ????sudo?pip?install?virtualenv sudo?pip?install?virtualenvwrapper?? --?創(chuàng)建虛擬環(huán)境 mkvirtualenv?環(huán)境名稱 mkvirtualenv?py_django --?查看與使用虛擬環(huán)境 workon?兩次tab鍵 workon?py_django --?刪除虛擬環(huán)境 rmvirtualenv?虛擬環(huán)境名稱 先退出:deactivate 再刪除:rmvirtualenv?py_django #?在創(chuàng)建虛擬環(huán)境過程中,在home目錄下的.virtualenvs文件下, #?會生成剛創(chuàng)建的虛擬環(huán)境,而且過程中系統(tǒng)會默認(rèn)生成多個包, #?以及將usr/bin/文件下的python文件復(fù)制到這個虛擬環(huán)境包里 #?的/bin文件下; --?查看當(dāng)前所有的包 pip?list?或者pip?freeze #?或者:~/.virtualenvs/py_django/lib/python2.7/site-packages下 #?查看所有的包 --?虛擬環(huán)境下安裝包 pip?install?包名稱 安裝django1.8.2的包 pip?install?django==1.8.2 |
-- 創(chuàng)建項(xiàng)目(圖書,英雄,一對多的關(guān)系)
| 1 2 3 4 5 6 7 8 9 | #?在Desktop下創(chuàng)建,不會出現(xiàn)權(quán)限問題; django-admin?startproject?項(xiàng)目名稱 --tree --?manage.py?是項(xiàng)目運(yùn)行入口,指定配置文件路徑; --?test1?包含項(xiàng)目的配置文件; --?__init__表示這個目錄當(dāng)作包使用; --?settings.py?是整體配置文件; --?urls.py?是URL配置文件; --?wsgi.py?是與WSGI兼容的web服務(wù)器入口; |
-- 創(chuàng)建應(yīng)用
| 1 2 3 4 5 6 7 8 | python?manage.py?startapp?booktest(應(yīng)用名稱) --?booktest --?admin.py --__init__.py --?migrations? --?__init__.py --?models.py??#?不許要手動到數(shù)據(jù)庫中操作,直接在這個文件匯總添加類; --?tests.py |
-- 添加/安裝應(yīng)用
| 1 2 3 4 5 6 | 在test1/settings.py中INSTALLED_APPS下添加應(yīng)用名稱就可以安裝; 'bootest'; #?開啟服務(wù)器(同時(shí)生成一個sql數(shù)據(jù)庫) #?python?manage.py?runserver?ip:端口 #?1.ip可以不寫; #?2.默認(rèn)端口為8000 |
-- 模型設(shè)計(jì)
-- 創(chuàng)建模型類
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | --?ORM框架?將python的對象轉(zhuǎn)換成數(shù)據(jù)庫中sql的操作; #?通過自定義模型類和對象,完成對數(shù)據(jù)庫的操作 --?在manage.py中設(shè)置環(huán)境變量,用settings控制管理整個項(xiàng)目;(默認(rèn)已經(jīng)設(shè)置) os.environ.setdefault("DJANGO_SETTINGS_MODULE",?"test1.settings") --?models.py #?定義類時(shí),需要繼承models.Model類; #?class?BookInfo(models.Model): btitle?=?models.CharField(max_length=20)??#?設(shè)置字符長度; bpubdate?=?models.DateField()??#?設(shè)置日期格式; #?class?HeroInfo(models.Model): hname?=?models.CharField(max_length=20) hcontent?=?models.CharField(max_length=100) hgender?=?models.BooleanField(default=True)??#?設(shè)置布爾類型; hbook?=?models.ForeignKey(BookInfo)??#?設(shè)置外鍵對象; --?查看遷移文件對應(yīng)的sql語句 python?manage.py?sqlmigrate?news?0001 --?生成遷移文件(相當(dāng)于生成sql語句,以及執(zhí)行) #?根據(jù)模型類與屬性,確定表結(jié)構(gòu),生成文件; #?執(zhí)行遷移; 生成:python?manage.py?makemigrations(執(zhí)行sql語句) #?會在migrations文件下,0001_initial.py的文件,__init__.py #?里面是類似于sql語句的代碼; 執(zhí)行:python?manage.py?migrate(創(chuàng)建表結(jié)構(gòu)) #?生成__init__.pyc文件 |
-- 使用模型類
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | --?進(jìn)入項(xiàng)目的shell,進(jìn)行簡單的API操作 python?manage.py?shell #?在模塊中引入類對象,再進(jìn)行操作; from?booktest.models?import?BookInfo --?在shell下對數(shù)據(jù)進(jìn)行增刪改查(忽略) BookInfo.objects.all()??#?查詢所有; #?創(chuàng)建對象 b=BookInfo() b.title='射雕英雄傳' from?datetime?import?date b.pub_date=date(2017,1,1) b.save()??#?保存數(shù)據(jù); #?創(chuàng)建/獲取指定對象 b=BookInfo.objects.get(id=1) b.title='神雕俠侶' b.save() ... |
-- 后臺管理(CMS內(nèi)容管理系統(tǒng))
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | --?創(chuàng)建管理員 --?注冊用戶 python?manage.py?createsuperuser #?用戶名默認(rèn):python;密碼:chuanzhi --?進(jìn)入后臺管理頁面 #?修改界面語言(默認(rèn)英文) settings.py文件中修改成?LANGUAGE?=?'zh-Hans';TIME_ZONE?=?'Asia/Shanghai' #?在.virtualenvs/py_django/lib/python2.7/site-packages/django/contrib/admin/locale/文件下 --?啟動服務(wù)器,瀏覽 python?manage.py?runserver http://127.0.0.1:8000/admin --?注冊?admin.py(注冊模型類,將model.py創(chuàng)建的類引入后臺) 引入模型類 from?models?import?* admin.site.register(BookInfo) admin.site.register(HeroInfo) #?str方法中,使用了中文,需要在models中str方法下的屬性encode("utf-8") --?支持自定義(在后臺顯示所有屬性,繼承admin.ModelAdmin類) class?BookInfoAdmin(admin.ModelAdmin): list_display?=?['id',?'title',?'pub_date'] class?HeroInfoAdmin(admin.ModelAdmin): list_display?=?['id',?'name',?'content',?'gender',?'book'] #?將添加屬性的類添加到注冊中; admin.site.register(BookInfo,?BookInfoAdmin) |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | --視圖 --?定義視圖函數(shù)(接受request,返回HttpResponse) #?view #?本質(zhì)就是一個函數(shù); #?封裝所有信息; from?django.http?import?HttpResponse #?必須傳入HttpRquest對象的request,返回HttpResonse對象; def?index(request): return?HttpResponse('hello?world') --?配置URLconf(找到對應(yīng)視圖函數(shù)) #?找到視圖的過程: #?用戶在瀏覽器輸入url地址,請求訪問網(wǎng)站后,服務(wù)器后臺接受到信息, #?然后與寫好的URLconf逐一匹配,如果匹配到就調(diào)用;沒有就返回404錯誤; --?URLconf?編寫規(guī)則 1.使用正則表達(dá)式定義; 2.使用view.py中定義的視圖 --?URLconf?配置過程 1.在自己創(chuàng)建的應(yīng)用(booktest)中創(chuàng)建urls.py文件,配置URLconf,定義; from?django.conf.urls?import?url from?.?import?views urlpatterns?=?[url(r'^$',?view.index),]?#?view.index調(diào)用視圖模塊中定義的index函數(shù); 2.在項(xiàng)目中的url.py,鏈接到應(yīng)用的URLconf中; url(r'^',?include('booktest.urls')), #?其完整代碼 from?django.conf.urls?import?include,?url from?django.contreib?import?admin urlpatterns?=?[ url(r'^admin/',?include(admin.site.urls)) url(r'^',?include('booktest.urls')), ] #?請求訪問:127.0.0.1:8000 |
-- 模板
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #?在Django中,將前端內(nèi)容定義在模板中,再把模板交給視圖調(diào)用; --?創(chuàng)建模板 #?在項(xiàng)目目錄下創(chuàng)建模板文件夾templates,并在其中創(chuàng)建與應(yīng)用 #?同名的文件存放模板文件; --?視圖中尋找模板 --?在settings.py中做設(shè)置,為了找到templates模板文件位置 'DIRS':[os.path.join(BASE_DIR,?'templates')],??#?拼接templates文件夾所在位置; --?在views.py中加載渲染模板 def?index(request): cag?=?NewsCategory.objects.get(pk=1)?#?pk(primary?key)相當(dāng)于Id data?=?{'cag':?cag.cag_name} tpl?=?loader.get_template('index.html') new_tpl?=?tpl.render(data) return?HttpResponse(new_tpl) #?簡寫成一下操作:? def?index(request): return?render(request,?'booktest/index.html') |
總結(jié)
以上是生活随笔為你收集整理的Django入门 -- 框架操作基本流程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。