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