導航:首頁 > 編程語言 > pythondjango案例

pythondjango案例

發布時間:2023-02-09 13:37:06

python + django 多表聯合查詢方法求教

先讓我們回憶一下在第五章里的關於書本(book)的數據模型:1fromdjango.dbimportmodelsclassPublisher(models.Model):name=models.CharField(max_length=30)address=models.CharField(max_length=50)city=models.CharField(max_length=60)state_province=models.CharField(max_length=30)country=models.CharField(max_length=50)website=models.URLField()def__unicode__(self):returnself.nameclassAuthor(models.Model):first_name=models.CharField(max_length=30)last_name=models.CharField(max_length=40)email=models.EmailField()def__unicode__(self):returnu'%s%s'%(self.first_name,self.last_name)classBook(models.Model):title=models.CharField(max_length=100)authors=models.ManyToManyField(Author)publisher=models.ForeignKey(Publisher)publication_date=models.DateField()def__unicode__(self):returnself.title如我們在第5章的講解,獲取資料庫對象的特定欄位的值只需直接使用屬性。例如,要確定ID為50的書本的標題,我們這樣做:>>>frommysite.books.modelsimportBook>>>b=Book.objects.get(id=50)>>>b.titleu'TheDjangoBook'但是,在之前有一件我們沒提及到的是表現為ForeignKey或ManyToManyField的關聯對象欄位,它們的作用稍有不同。訪問外鍵(ForeignKey)值當你獲取一個ForeignKey欄位時,你會得到相關的數據模型對象。例如:>>>b=Book.objects.get(id=50)>>>b.publisher>>>b.publisher.websiteu'http://www.apress.com/'對於用``ForeignKey``來定義的關系來說,在關系的另一端也能反向的追溯回來,只不過由於不對稱性的關系而稍有不同。通過一個``publisher``對象,直接獲取books,用publisher.book_set.all(),如下:>>>p=Publisher.objects.get(name='ApressPublishing')>>>p.book_set.all()[,,]實際上,book_set只是一個QuerySet(參考第5章的介紹),所以它可以像QuerySet一樣,能實現數據過濾和分切,例如:1>>>p=Publisher.objects.get(name='ApressPublishing')>>>p.book_set.filter(name__icontains='django')[,]屬性名稱book_set是由模型名稱的小寫(如book)加_set組成的。訪問多對多值(Many-to-ManyValues)多對多和外鍵工作方式相同,只不過我們處理的是QuerySet而不是模型實例。例如,這里是如何查看書籍的作者:>>>b=Book.objects.get(id=50)>>>b.authors.all()[,]>>>b.authors.filter(first_name='Adrian')[]>>>b.authors.filter(first_name='Adam')[]反向查詢也可以。要查看一個作者的所有書籍,使用author.book_set,就如這樣:>>>a=Author.objects.get(first_name='Adrian',last_name='Holovaty')>>>a.book_set.all()[,]這里,就像使用ForeignKey欄位一樣,屬性名book_set是在數據模型(model)名後追加_set。更改資料庫模式(DatabaseSchema)3在我們在第5章介紹syncdb這個命令時,我們注意到syncdb僅僅創建資料庫里還沒有的表,它並不對你數據模型的修改進行同步,也不處理數據模型的刪除。如果你新增或修改數據模型里的欄位,或是刪除了一個數據模型,你需要手動在資料庫里進行相應的修改。這段將解釋了具體怎麼做:當處理模型修改的時候,將Django的資料庫層的工作流程銘記於心是很重要的。如果模型包含一個未曾在資料庫里建立的欄位,Django會報出錯信息。當你第一次用Django的資料庫API請求表中不存在的欄位時會導致錯誤(就是說,它會在運行時出錯,而不是編譯時)。3Django不關心資料庫表中是否存在未在模型中定義的列。Django不關心資料庫中是否存在未被模型表示的表格。1改變模型的模式架構意味著需要按照順序更改Python代碼和資料庫。添加欄位1當要向一個產品設置表(或者說是model)添加一個欄位的時候,要使用的技巧是利用Django不關心表裡是否包含model里所沒有的列的特性。策略就是現在資料庫里加入欄位,然後同步Django的模型以包含新欄位。3然而這里有一個雞生蛋蛋生雞的問題,由於要想了解新增列的SQL語句,你需要使用Django的manage.pysqlall命令進行查看,而這又需要欄位已經在模型里存在了。(注意:你並不是非得使用與Django相同的SQL語句創建新的欄位,但是這樣做確實是一個好主意,它能讓一切都保持同步。)3這個雞-蛋的問題的解決方法是在開發者環境里而不是發布環境里實現這個變化。(你正使用的是測試/開發環境,對吧?)下面是具體的實施步驟。首先,進入開發環境(也就是說,不是在發布環境里):在你的模型里添加欄位。運行manage.pysqlall[yourapp]來測試模型新的CREATETABLE語句。注意為新欄位的列定義。開啟你的資料庫的交互命令界面(比如,psql或mysql,或者可以使用manage.pydbshell)。執行ALTERTABLE語句來添加新列。使用Python的manage.pyshell,通過導入模型和選中表單(例如,MyModel.objects.all()[:5])來驗證新的欄位是否被正確的添加,如果一切順利,所有的語句都不會報錯。3然後在你的產品伺服器上再實施一遍這些步驟。啟動資料庫的交互界面。5執行在開發環境步驟中,第三步的ALTERTABLE語句。將新的欄位加入到模型中。如果你使用了某種版本控制工具,並且在第一步中,已經提交了你在開發環境上的修改,現在,可以在生產環境中更新你的代碼了(例如,如果你使用Subversion,執行svnupdate。重新啟動Webserver,使修改生效。讓我們實踐下,比如添加一個num_pages欄位到第五章中Book模型。首先,我們會把開發環境中的模型改成如下形式:classBook(models.Model):title=models.CharField(max_length=100)authors=models.ManyToManyField(Author)publisher=models.ForeignKey(Publisher)publication_date=models.DateField()**num_pages=models.IntegerField(blank=True,null=True)**def__unicode__(self):returnself.title

Ⅱ django helloworld案例總是報No mole named mysite.view錯誤 求大神幫忙,第一個python項目都搞不定!

沒有配置對路徑,解釋器沒有找到你的mysite模塊

Ⅲ Python django 做時間判斷

djaogo 時間判斷表達

時間
1、gt:大於某個時間
now = datetime.datetime.now()
前一天
start = now – datetime.timedelta(hours=23, minutes=59, seconds=59)
a=yourobject.objects .filter(youdatetimcolumn__gt=start)

2、gte:大於等於某個時間:
a=yourobject.objects .filter(youdatetimcolumn__gte=start)

3、lt:小於
a=yourobject.objects .filter(youdatetimcolumn__lt=start)

4、lte:小於等於
a=yourobject.objects .filter(youdatetimcolumn__lte=start)

5、range:查詢時間段
start_date = datetime.date(2005, 1, 1)
end_date = datetime.date(2005, 3, 31)
Entry.objects.filter(pub_date__range=(start_date, end_date))

6、year:查詢某年
Entry.objects.filter(pub_date__year=2005)

7、month:查詢某月
Entry.objects.filter(pub_date__month=12)

8、day:某天
Entry.objects.filter(pub_date__day=3)

9、week_day:星期幾
Entry.objects.filter(pub_date__week_day=2)

10、獲取今天的日期,日期格式為yyyy-MM-dd

from django.utils.timezone import now, timedelta
date = now().date() + timedelta(days=-1) #昨天
date = now().date() + timedelta(days=0) #今天
date = now().date() + timedelta(days=1) #明天

Ⅳ 我有一點點Python的基本知識(非常基本) ,想學一下Django, 請推薦幾本入門的Django教程,謝謝

Django 基礎
1. 視頻
推薦使用慕課網的兩門免費在線視頻課程作為入門:
django初體檢
django入門與實踐
這兩門課基本涵蓋了 Django 最核心、同時也是最常用的部分,他們會給你建立一個 Django 的整體概念,便於消除你對 Django 的陌生感和恐懼感。
如果想進一步詳細的了解 Django,有個綜合性的教程名叫
《Django 企業開發實戰》
該教程包含 gibbook 電子書(免費)以及視頻部分(收費)。
其他中文資料
自強學堂:Django 教程 內容詳實免費。值得一提的是作者使用 Django 建站,完全是在實踐 Django 的使用,而且作者從2015年至今一直在根據 Django 版本升級而更新教學內容,從最初的 Django 1.6 更新到了 Django 1.10。作者稱最新版本的 Django 1.11 內容馬上就要推出。
Django Girls 教程 Django Girls 的中文版,使用 Django 1.8。
追夢人物的博客 以 Django 1.10 為基礎開發博客到部署的完整教程。
2. 書籍
Two Scoops of Django:目前有兩個版本 Two Scoops of Django: Best Practices for Django 1.11 和 Two Scoops of Django: Best Practices for Django 1.8 。這本書在 Django 的名氣也是非常大,基本可以說影響過大多數 Django 開發人員,如果要進階稱為 Django 專業開發者,這本書是繞不過去的必看書籍。內容主要涵蓋 Django 的最佳實踐。
Django By Example 在進階的課程中,本書算是不錯的。雖然一些章節(比如第7章)部分代碼仍然存在 bug,但是一方面作者正在該書主頁不斷進行代碼更正,另一方面也是對中國讀者最好的是,這本書已經由同在簡書的 @夜夜月 進行了全書翻譯:《Django By Example》中文版。
Django Unleashed 內容覆蓋較廣,很多內容在其他書籍中並沒有提及,比如密碼的hash與加密等。但是沒有實戰項目。
《Python Web 測試驅動方法》 雖然測試驅動的開發方法(Test-Driven Development,TDD)並不是每個項目都會採用,但是測試的思想與方法還是值得去掌握。Python 作為一門動態語言,沒有靜態類型檢測的情況下,測試的重要性就顯得尤為重要。本書使用 Django 的整個開發流程作為實例,作者不僅講了開發過程單元測試和 Selenium 測試,同時也把部署的內容也覆蓋到。內容始於 Django,但不僅僅是 Django,相信使用其他框架的 Python 開發者也可以從中獲益匪淺。

Ⅳ 推薦幾個適合新手練手的Python項目

《Python實戰:四周實現爬蟲系統》網路網盤免費下載

鏈接:

提取碼: xb

Python實戰:四周實現爬蟲系統

Ⅵ Python中,django框架模式有什麼

Django發布於2005年,是當前Python世界裡最負盛名且成熟的網路框架,最初用來製作在線新聞的Web站點。

Django是一個用Python編寫的開放源代碼的Web應用框架,採用了MVC的框架模式,也有很多人把它稱為MVT模式。

優點:

功能完善且要素齊全:自帶大量常用的工具和框架,適合快速開發企業級網站;

完善的文檔:經過十多年的發展和完善,Django有廣泛的實踐案例和完善的在線文檔,開發者遇到問題可以搜索在線文檔尋求解決方案;

強大的資料庫訪問組件:Django的Model層自帶資料庫ORM組件,使得開發者無需學習SQL語言即可對資料庫進行操作;

先進的APP設計理念:APP是可插拔的,是不可多得的思想,不需要了可以直接刪除,對系統整體影響不大;

自帶台管理系統admin:只需要通過簡單幾行配置和代碼就可以實現一個完整的後台數據管理控制平台。

缺點:

大包大攬:對比flask框架來講,Django不夠輕便,包括的功能太多了;

過度封裝:很多類和方法都封裝了,直接使用比較簡單,改動比較困難;

性能劣勢:Django性能偏低;

模板問題:Django的模板實現了代碼和樣式完全分離,不允許模板里出現Python代碼,靈活度對某些程序員來說可能不夠。

Ⅶ 如何在pycharm的django框架下給model的實例賦值

安裝軟體
安裝 Python 2.7、PyCharm、pip(Python包管理工具)、Django ( pip install Django)

部署
PyCharm 新建Django工程

完成後,其目錄如下:

子目錄MyDjangoProject下表示工程的全局配置,分別為setttings.py、urls.py和wsgi.py,其中setttings.py包括了系統的資料庫配置、應用配置和其他配置,urls.py則
表示web工程Url映射的配置。
子目錄student則是在該工程下創建的app,包含了models.py、tests.py和views.py等文件
templates目錄則為模板文件的目錄
manage.py是Django提供的一個管理工具,可以同步資料庫等等

啟動
創建完成後,就可以正常啟動了。點擊Run 按鈕,啟動時報錯了:

Traceback (most recent call last):
File "D:/workspace/MyDjangoProject/manage.py", line 10, in <mole>
execute_from_command_line(sys.argv)
File "D:\Python27\lib\site-packages\django\core\management\__init__.py", line 338, in execute_from_command_line
utility.execute()
File "D:\Python27\lib\site-packages\django\core\management\__init__.py", line 312, in execute
django.setup()
File "D:\Python27\lib\site-packages\django\__init__.py", line 18, in setup
apps.populate(settings.INSTALLED_APPS)
File "D:\Python27\lib\site-packages\django\apps\registry.py", line 89, in populate
"plicates: %s" % app_config.label)
django.core.exceptions.ImproperlyConfigured: Application labels aren't unique, plicates: admin

應該是admin配置沖突了,打開setttings.py文件,發現admin配置重復了

INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.admin',
'student',
)

注釋掉其中一行後(為什麼會有這個問題,估計是個bug),重新啟動,ok

閱讀全文

與pythondjango案例相關的資料

熱點內容
遼寧圖片加密軟體地址 瀏覽:931
程序員35後應該學些啥技術 瀏覽:724
蘋果怎麼把app還原成ipa包 瀏覽:358
天正怎麼分解加密圖紙 瀏覽:829
你喜歡的大胸部電影 瀏覽:755
飛盧破解版網址 瀏覽:632
怎麼在米家app裡面找到小愛同學 瀏覽:208
網盤的小說在哪個文件夾 瀏覽:59
阿里程序員約炮 瀏覽:939
java語言程序設計題 瀏覽:464
法和經濟學pdf 瀏覽:703
statafgls命令 瀏覽:737
汽車壓縮機電磁閥檢測 瀏覽:543
c編譯器如何打開 瀏覽:760
小受重生回80年代 瀏覽:797
夢幻無敵伺服器什麼時候開的 瀏覽:903
cnc編程程序走不了g代碼不正確 瀏覽:772
轉轉app賣家怎麼收錢 瀏覽:883
app綁定微信支付讓拒是怎麼回事 瀏覽:568
radan編程 瀏覽:52