久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

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

 達(dá)坂城大豆 2017-12-06

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


作者:劉江 

來(lái)源:http://www.cnblogs.com/feixuelove1009/

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)單了,。

例如以前的:

  1. url(r'^articles/(?P[0-9]{4})/$', views.year_archive),

可以寫(xiě)作:

  1. path('articles//', views.year_archive),

新語(yǔ)法支持強(qiáng)制定義參數(shù)類(lèi)型。例子中只接收整數(shù)型年份參數(shù),,不再接收字符串類(lèi)型,,同時(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á)式允許為查詢(xún)集添加一個(gè)OVER從句,。

4.小特性

django.contrib.admin后臺(tái)

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

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

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

django.contrib.gis地理框架

  • 為AsGeoJSON,、GeoHash和GeoHash方法,isvalid和distance查詢(xún)?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類(lèi)允許在數(shù)據(jù)庫(kù)中創(chuàng)建GiST索引;

  • inspectdb現(xiàn)在可以?xú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()方法返回字典類(lèi)型的表單錯(cuò)誤,以適應(yīng)JSON類(lèi)型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到季度的第一天;

  • 為基于類(lèi)的索引添加 db_tablespace參數(shù),;

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

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

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

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

  • 新的FilteredRelation類(lèi)允許為查詢(xún)集增加一個(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添加多線(xiàn)程支持,;

Validators驗(yàn)證器

  • 新的ProhibitNullCharactersValidator不允許CharField及其子類(lèi)的表單輸入為空,;

三、重要的向后不兼容

1. 某些地方刪除對(duì)bytestrings的支持

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

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

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

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

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

  2. class MyUserChangeForm(UserChangeForm):

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

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

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

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

  3. class MyUserAdmin(UserAdmin):

  4.    form = MyUserChangeForm

  5. admin.site.unregister(User)

  6. admin.site.register(User, MyUserAdmin)

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

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

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

  2. Traceback (most recent call last):

  3. ...

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

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

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

  1. forms.IntegerField(25, 10)

要這么傳遞:

  1. forms.IntegerField(max_value=25, min_value=10)

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

例如下面的用法將導(dǎo)致異常:

  1. models.Index(['headline', '-pub_date'], 'index_name')

要提供參數(shù)關(guān)鍵字,,改寫(xiě)為:

  1. 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屬性,如下所示:

  1. class MyCommand(BaseCommand):

  2.    stealth_options = ('option_name', ...)

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

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

總結(jié): 好像也沒(méi)多大變化,不是重度使用者,,基本感受不出變化來(lái),,該怎么用還是怎么用,^-^!


題圖:pexels,,CC0 授權(quán),。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,,不代表本站觀(guān)點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多