成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Django 2.0 發(fā)布,都有哪些新特性要注意?

RancherLabs / 3045人閱讀

摘要:是開(kāi)發(fā)最常用的框架之一,跟進(jìn)它的最新變化絕對(duì)是必須的。年月日,官方發(fā)布了版本,成為多年來(lái)的第一次大版本提升,那么對(duì)廣大使用者有哪些變化和需要注意的地方呢一兼容性支持和。

Django 是 Python Web 開(kāi)發(fā)最常用的框架之一,跟進(jìn)它的最新變化絕對(duì)是必須的。

2017年12月2日,Django官方發(fā)布了2.0版本,成為多年來(lái)的第一次大版本提升,那么2.0對(duì)廣大Django使用者有哪些變化和需要注意的地方呢?

一、Python兼容性

Django 2.0支持Python3.4、3.5和3.6。Django官方強(qiáng)烈推薦每個(gè)系列的最新版本。

最重要的是Django 2.0不再支持Python2!

Django 1.11.x是支持Python2.7的最后版本。

二、2.0新特性 1.簡(jiǎn)化了URL路由語(yǔ)法

django.urls.path()方法的語(yǔ)法更簡(jiǎn)單了。

例如以前的:
url(r"^articles/(?P[0-9]{4})/$", views.year_archive),

可以寫作:
path("articles//", views.year_archive),

新語(yǔ)法支持強(qiáng)制定義參數(shù)類型。例子中只接收整數(shù)型年份參數(shù),不再接收字符串類型,同時(shí)"10000"年也是合法的(雖然是5位數(shù)字),而不像先前正則里只能接收4位數(shù)字。

以前版本的?django.conf.urls.url()方法變成了?django.urls.re_path(),但為了向后兼容,舊的依然保留,而不是立刻廢棄。?django.conf.urls.include()方法現(xiàn)在可以從?django.urls導(dǎo)入,也就是你可以使用?from?django.urls?import?include,?path,?re_path。

2.admin后臺(tái)對(duì)移動(dòng)端更加友好

Django最受大家歡迎的admin后臺(tái),具有響應(yīng)式特性,支持主流的移動(dòng)設(shè)備。

3.Window 表達(dá)式

新的Window表達(dá)式允許為查詢集添加一個(gè)OVER從句。

4.小特性 django.contrib.admin后臺(tái)

新的?ModelAdmin.autocomplete_fields屬性和?ModelAdmin.get_autocomplete_fields()方法現(xiàn)在可以在外鍵和多對(duì)多字段上使用Select2搜索框。

django.contrib.auth用戶認(rèn)證

PBKDF2密碼哈希默認(rèn)的迭代次數(shù)從36000增加到100000。

django.contrib.gis地理框架

為AsGeoJSON、GeoHash和GeoHash方法,isvalid和distance查詢?cè)黾覯ySQL支持;

添加Azimuth和LineLocatePoint方法,支持PostGIS和SpatiaLite;

所有從GeoJSON導(dǎo)入的GEOSGeometry擁有SRID集合;

添加?OSMWidget.default_zoom屬性,用于自定義地圖的默認(rèn)縮放級(jí)別;

metadata現(xiàn)在是可讀可編輯的;

允許在GDAL的內(nèi)部虛擬文件系統(tǒng)中創(chuàng)建GDALRaster對(duì)象;

新的?GDALBand.color_interp()方法返回波段的顏色說(shuō)明。

django.contrib.postgres數(shù)據(jù)庫(kù)

ArrayAgg新增distinct參數(shù);

新的RandomUUID函數(shù);

django.contrib.postgres.indexes.GinIndex現(xiàn)在支持?fastupdate和?gin_pending_list_limit參數(shù);

新的GistIndex類允許在數(shù)據(jù)庫(kù)中創(chuàng)建GiST索引;

inspectdb現(xiàn)在可以內(nèi)省JSONField和RangeFields。

django.contrib.sitemaps站點(diǎn)地圖

為GenericSitemap構(gòu)造器增加protocol參數(shù);

Cache緩存

cache.set_many()現(xiàn)在返回一個(gè)列表,包含了插入失敗的鍵值;

File Storage文件存儲(chǔ)

File.open()現(xiàn)在可以用于上下文管理器,例如?with file.open() as f:;

Forms表單

SplitDateTimeWidget和?SplitHiddenDateTimeWidget增加?date_attrs與?time_attrs參數(shù),用于為?DateInput與?TimeInput指定HTML屬性;

新的?Form.errors.get_json_data()方法返回字典類型的表單錯(cuò)誤,以適應(yīng)JSON類型x響應(yīng);

Generic Views通用視圖

新的?ContextMixin.extra_context屬性允許在?View.as_view()中添加上下文;

Management Commands管理命令

inspectdb現(xiàn)在將MySQL的無(wú)符號(hào)整數(shù)視作?PositiveIntegerField或者?PositiveSmallIntegerField;

新增?makemessages --add-location選項(xiàng);

loaddata現(xiàn)在可以從標(biāo)準(zhǔn)輸入讀入;

新增?diffsettings --output選項(xiàng);

Migrations遷移

新增?squashmigrations --squashed-name選項(xiàng);

Models模型

新增StrIndex數(shù)據(jù)庫(kù)函數(shù);

對(duì)于Oracle數(shù)據(jù)庫(kù),AutoField和BigAutoField現(xiàn)在會(huì)生成identity列;

QuerySet.iterator()新增?chunk_size參數(shù);

QuerySet.earliest()、?QuerySet.latest()和?Meta.get_latest_by現(xiàn)在可以根據(jù)一些字段進(jìn)行排序;

增加ExtractQuarter方法,用于DateField和DateTimeField;

新增TruncQuarter方法用于截取DateField和DateTimeField到季度的第一天;

為基于類的索引添加?db_tablespace參數(shù);

為?QuerySet.select_for_update()增加of參數(shù),但只支持PostgreSQL和Oracle數(shù)據(jù)庫(kù);

QuerySet.in_bulk()新增?field_name參數(shù);

CursorWrapper.callproc()現(xiàn)在接收可選的字典類型關(guān)鍵字參數(shù);

QuerySet.values_list()新增named參數(shù),用于獲取命名的元組結(jié)果;

新的FilteredRelation類允許為查詢集增加一個(gè)ON從句;

增加?Paginator.get_page(),可以處理各種非法頁(yè)面參數(shù),防止異常;

Requests and Responses請(qǐng)求和相應(yīng)

現(xiàn)在,runserver服務(wù)器支持HTTP 1.1;

Templates模版

為了提高?Engine.get_default()在第三方模塊的用途,現(xiàn)在它將返回配置在TEMPLATES中的多個(gè)DjangoTemplates引擎中的第一個(gè),而不是彈出ImproperlyConfigured錯(cuò)誤;

自定義模版標(biāo)簽現(xiàn)在接收強(qiáng)制關(guān)鍵字參數(shù);

Tests測(cè)試

為L(zhǎng)iveServerTestCase添加多線程支持;

Validators驗(yàn)證器

新的ProhibitNullCharactersValidator不允許CharField及其子類的表單輸入為空;

三、重要的向后不兼容 1. 某些地方刪除對(duì)bytestrings的支持

例如,對(duì)于reverse(),現(xiàn)在使用str()代替force_text()。

2. AbstractUser.last_name的最大長(zhǎng)度增加到150

如果你有一個(gè)自定義的用戶模型繼承了AbstractUser,你需要生成并應(yīng)用一個(gè)數(shù)據(jù)庫(kù)遷移,使得?last_name的最大長(zhǎng)度變?yōu)?50。

如果你需要為?last_name保持30個(gè)字符的限制,可以如下使用自定義表單:

from?django.contrib.auth.forms?import?UserChangeForm

class?MyUserChangeForm(UserChangeForm):

? ?last_name?=?forms.CharField(max_length=30,?required=False)

如果你需要在admin中也保持這個(gè)約束,那么可以如下使用UserAdmin.form:

from?django.contrib.auth.admin?import?UserAdmin

from?django.contrib.auth.models?import?User

class?MyUserAdmin(UserAdmin):

? ?form?=?MyUserChangeForm

admin.site.unregister(User)

admin.site.register(User,?MyUserAdmin)

3. QuerySet.reverse()和last()不能用于切片后的查詢集

對(duì)切片后的查詢集使用反轉(zhuǎn)和獲取最近對(duì)象的操作將彈出異常,如下所示:

>>>?Model.objects.all()[:2].reverse()

Traceback?(most recent call?last):

...

TypeError:?Cannot?reverse a query once a slice has been taken.

4. 表單的字段不再接收可選參數(shù)作為位置參數(shù)

為了防止運(yùn)行時(shí)錯(cuò)誤,提高可靠性。以前類似下面的參數(shù)傳遞方法,現(xiàn)在是錯(cuò)誤的了:
forms.IntegerField(25,?10)

要這么傳遞:
forms.IntegerField(max_value=25,?min_value=10)

5. Index不再接收位置參數(shù)

例如下面的用法將導(dǎo)致異常:
models.Index(["headline",?"-pub_date"],?"index_name")

要提供參數(shù)關(guān)鍵字,改寫為:
models.Index(fields=["headline",?"-pub_date"],?name="index_name")

6. call_command()將驗(yàn)證它接收的選項(xiàng)

對(duì)于使用選項(xiàng)而不是使用?parser.add_argument()進(jìn)行自定義的管理命令,需要添加一個(gè)?stealth_options屬性,如下所示:

class?MyCommand(BaseCommand):

? ?stealth_options?=?("option_name",?...)

7. SQLite現(xiàn)在支持外鍵約束

另外,Django2.0還廢棄和移除了一些方法和屬性。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/41597.html

相關(guān)文章

  • Python入門-Python簡(jiǎn)介

    摘要:年月宣布支持時(shí)間延長(zhǎng)到年。更詳細(xì)的發(fā)布列表參閱官網(wǎng)的版本號(hào)分為三段,形如。其中表示大版本號(hào),一般當(dāng)整體重寫,或出現(xiàn)不向后兼容的改變時(shí),增加表示功能更新,出現(xiàn)新功能時(shí)增加表示小的改動(dòng)如修復(fù)了某個(gè),只要有修改就增加。年公司正式發(fā)布。 < 返回索引頁(yè) Python語(yǔ)言簡(jiǎn)介 Python介紹及發(fā)展 介紹 Python 官方網(wǎng)站:https://www.python.org/, 大家可以到此處下...

    Java_oldboy 評(píng)論0 收藏0
  • Python WTForms 2.0 發(fā)布

    摘要:于年月發(fā)布,這是繼之后第一個(gè)重要的版本。核心改為的另一種形式棄用改為改為擴(kuò)展所有擴(kuò)展將會(huì)被棄用。這些擴(kuò)展會(huì)從中抽離出來(lái),允許他們有單獨(dú)的發(fā)布時(shí)間表,使得適合于他們的。 WTForms 是一個(gè) Python 表單驗(yàn)證、渲染開(kāi)發(fā)包。WTForms 2.0 于2014年5月發(fā)布,這是繼 WTForms 1.0.5 之后第一個(gè)重要的版本。 新特性 Class Meta 可以從多方面定制...

    susheng 評(píng)論0 收藏0
  • 超實(shí)用的 Python 學(xué)習(xí)資源匯總

    摘要:鏈接中文翻譯常用庫(kù)推薦除了上面提到的之外,也是一個(gè)很好的選項(xiàng)。官網(wǎng)中文翻譯如果你要編寫簡(jiǎn)單的爬蟲(chóng),來(lái)爬去互聯(lián)網(wǎng)上的信息,或者調(diào)用一些外部的機(jī)遇的接口,使用這個(gè)庫(kù)再也合適不過(guò)了。 作者:安龍 LeanCloud 工程師 引言 :前段時(shí)間有同學(xué)反映 Python 的學(xué)習(xí)資源匯總很少。那么學(xué)習(xí)資料哪個(gè)質(zhì)量更好,效率更高?Python 有哪些非常值得學(xué)習(xí)的庫(kù)?2017 年了學(xué) 2 還是學(xué) 3 ...

    寵來(lái)也 評(píng)論0 收藏0
  • [譯] 如何使用 Docker 組件開(kāi)發(fā) Django 項(xiàng)目?

    摘要:按照指示,分別安裝和,然后測(cè)試安裝結(jié)果接下來(lái),根據(jù)以下項(xiàng)目結(jié)構(gòu)從克隆一份項(xiàng)目或自己創(chuàng)建項(xiàng)目現(xiàn)在我們準(zhǔn)備容器運(yùn)行開(kāi)啟,只需運(yùn)行這個(gè)命令設(shè)置一個(gè)新的開(kāi)發(fā)環(huán)境。 原文地址:Django Development With Docker Compose and Machine 以下為譯文 Docker 是一個(gè)開(kāi)源的應(yīng)用容器引擎,讓開(kāi)發(fā)者可以打包他們的應(yīng)用以及依賴包到一個(gè)可移植的容器...

    forsigner 評(píng)論0 收藏0
  • Django 2.0 - 創(chuàng)建第一個(gè)Django應(yīng)用 - 第一部分

    摘要:創(chuàng)建投票應(yīng)用采用創(chuàng)建的工程包括兩個(gè)層級(jí),一個(gè)是叫工程,另外一個(gè)是工程下面的應(yīng)用。一個(gè)工程可以包含多個(gè)應(yīng)用。路由配置分成兩個(gè)層級(jí),一個(gè)是在應(yīng)用層配置路由,另外一個(gè)是在工程層配置路由。 一般Django的網(wǎng)絡(luò)程序開(kāi)發(fā)步驟 配置開(kāi)發(fā)的環(huán)境 初始化項(xiàng)目 啟動(dòng)開(kāi)發(fā)服務(wù)器 創(chuàng)建應(yīng)用 創(chuàng)建View 配置訪問(wèn)View的路由 配置項(xiàng)目開(kāi)發(fā)環(huán)境 開(kāi)發(fā)一個(gè)新的項(xiàng)目,第一步就是配置項(xiàng)目的開(kāi)發(fā)環(huán)境。這里使用...

    TalkingData 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

RancherLabs

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<