<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Django 3.1版本正式發(fā)布,主要變化有哪些?

          共 2072字,需瀏覽 5分鐘

           ·

          2020-08-14 20:22

          Django 3.1版本已于8月4日正式發(fā)布了,里面又有不少激動人心的變化,讓Django變得更強大了。小編我今天就帶大家看看有哪些主要變化吧?

          Python版本兼容性

          Django 3.1支持Python 3.6, 3.7和3.8版本。官網(wǎng)建議更新到最新版本。


          對異步請求視圖和中間件的支持

          從3.1起,Django將提供支持完整的異步請求(request),包括:

          • Asynchronous views?(異步視圖)

          • Asynchronous middleware (異步中間件)

          • Asynchronous tests and test client (異步測試和測試客戶端)


          如果你希望使用異步視圖,需要先使用?async?def聲明,如下所示:

          async def my_view(request):    await asyncio.sleep(0.5)    return HttpResponse('Hello, async world!')

          無論你是在 WSGI 或 ASGI 模式下運行,Django都支持所有異步功能,不過在 WSGI 模式下使用異步代碼將會有些性能上的損失。


          你還可以隨意混合使用異步和同步視圖,中間件和測試。異步功能不會影響同步代碼的執(zhí)行速度,也不會對已有項目產(chǎn)生明顯的影響。


          Django的ORM,緩存層和其他長時間運行網(wǎng)絡(luò)調(diào)用的代碼尚不支持異步訪問。我們希望在即將發(fā)布的版本中增加對它們的支持。異步視圖是理想的選擇,但是,如果您在視圖內(nèi)進行大量的API或HTTP調(diào)用,則現(xiàn)在可以本地并行執(zhí)行所有這些HTTP調(diào)用,以大大加快視圖的執(zhí)行速度。


          小編注:一般建議使用同步視圖函數(shù),只有在有需要的情況下使用異步視圖。小編后面會分享具體案例,歡迎關(guān)注。


          新增JSONField,支持更多數(shù)據(jù)庫作為后端

          Django現(xiàn)在新增models.JSONField,?forms.JSONField并且支持在更多數(shù)據(jù)庫上運行。這兩個字段都支持使用自定義JSON編碼器和解碼器。以前json格式的數(shù)據(jù)僅適用于PostgreSQL數(shù)據(jù)庫。


          存儲的json格式的數(shù)據(jù)可以使用Django的ORM語法進行鏈?zhǔn)讲樵?,如下所示?br>

          from django.db import models
          class ContactInfo(models.Model): data = models.JSONField()
          ContactInfo.objects.create(data={ 'name': 'John', 'cities': ['London', 'Cambridge'], 'pets': {'dogs': ['Rufus', 'Meg']},})ContactInfo.objects.filter( data__name='John', data__pets__has_key='dogs', data__cities__contains='London',).delete()



          全面轉(zhuǎn)向pathlib

          從3.1后,Django將廣泛使用pathlib來處理文件路徑,而不是os.path模塊。settings.py中使用startproject命令生成的根目錄將使用?pathlib.Path。STATICFILES_DIRS和FileSystemStorage也將支持pathlib.Path



          國際化

          從3.1后,模板中負(fù)責(zé)標(biāo)記需要翻譯字符串的標(biāo)簽{% trans %}{% blocktrans %}將分別被更名為{%?translate?%}{% blocktranslate %}。不過短期內(nèi)較早的trans?blocktrans模板標(biāo)簽依然可以使用。

          <title>{% translate "This is the title." %}title><title>{% translate myvar %}title>
          {% blocktranslate %}This string will have {{ value }} inside.{% endblocktranslate %}


          其它小變化

          • Django admin新增空白過濾器django.contrib.admin.EmptyFieldListFilter,并在大屏幕上多了側(cè)邊導(dǎo)航

          • settings.py新增PASSWORD_RESET_TIMEOUT?選項,可以密碼重置鏈接有效期(以秒計算),將替代PASSWORD_RESET_TIMEOUT_DAYS

          • django.contrib.humanize模塊intword可以支持負(fù)數(shù)

          • AbstractUser的first_name的最大長度由30變到150個字符


          Django 3.1的變化,你最喜歡哪個呢??

          瀏覽 43
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  久久久久久国产精品三级玉女聊斋 | 亚洲综合激情视频 | 无码精品在线观看 | 亚洲日韩欧美一区 | h片网在线观看 |