Nótaí scaoileadh Django 2.0Link to this heading

2 Nollaig, 2017

Fáilte go dtí Django 2.0!

Clúdaíonn na nótaí scaoilte seo na:ref: gnéithe nua <whats-new-2.0>, chomh maith le roinnt: ref: athruithe neamh-chomhoiriúnacha ar chúl<backwards-incompatible-2.0> a mbeidh tú ag iarraidh a bheith ar an eolas fúthu agus tú ag uasghrádú ó Django 1.11 nó níos luaithe. <deprecated-features-2.0>Chuireamar: Ref: thit roinnt <removed-features-2.0>gnéithe `a bhfuil deireadh a dtimthriall díghníomhaíochta bainte amach acu, agus chuireamaire:ref: `thosaigh muid ar an bpróiseas díghníomhaíochta do roinnt gnéithe.

Cuireann an scaoileadh seo tús le húsáid Django as foirm scaoilte de leagan séimeantach, ach níl aon athruithe móra ar gcúl neamh-chomhoiriúnach a mbeifí ag súil leo ó eisiúint 2.0. Ba cheart go mbeadh an oiread céanna iarrachta le huasghrádú agus a bhí eisiúintí gné-ailt roimhe seo.

Féach an treoir:doc: /howto/upgrade-leagan má tá tionscadal atá ann cheana á nuashonrú agat.

Comhoiriúnacht PythonLink to this heading

Tacaíonn Django 2.0 le Python 3.4, 3.5, 3.6, agus 3.7. Molaimid** go hard** agus ní thacaímid go hoifigiúil ach leis an scaoileadh is déanaí de gach sraith.

Is é an tsraith Django 1.11.x an ceann deireanach a thacaíonn le Python 2.7.

Beidh Django 2.0 an tsraith scaoilte deireanach chun tacú le Python 3.4. Má phleanálann tú Python 3.4 a imscaradh níos faide ná deireadh na saoil do Django 2.0 (Aibreán 2019), cloí le Django 1.11 LTS (tacaíocht go dtí Aibreán 2020) ina ionad sin. Tabhair faoi deara, áfach, gurb é deireadh saoil Python 3.4 Márta 2019.

Tacaíocht leabharlainne tríú páirtí le haghaidh leagan níos sine de DLink to this heading

Tar éis Django 2.0 a scaoileadh, molaimid go scaoilfidh údair aip tríú páirtí tacaíocht do gach leagan de Django roimh 1.11. Ag an am sin, ba cheart go mbeadh tú in ann tástálacha do phacáiste a reáchtáil ag baint úsáide as python -Wd` ionas go mbeidh rabhaidh dífhabhtaithe le feiceáil. Tar éis duit na socruithe rabhaidh díghrádaithe a dhéanamh, ba chóir go mbeadh d'aip comhoiriúnach le Django 2.0.

Cad atá nua i Django 2.0Link to this heading

Comhréir ródaithe URL simplitheLink to this heading

The new django.urls.path() function allows a simpler, more readable URL routing syntax. For example, this example from previous Django releases:

Code
url(r"^articles/(?P<year>[0-9]{4})/$", views.year_archive),

d'fhéadfaí a scríobh mar:

Code
path("articles/<int:year>/", views.year_archive),

Tacaíonn an comhréireacht nua le cineál éigeantach ar pharaiméadair URL. Sa sampla, gheobhaidh an dearcadh an argóint eochairfhocal ``blian` mar shláimhir seachas mar shreang. Chomh maith leis sin, tá na URLanna a mheaitseálfaidh sé beagán níos lú srianta sa sampla athscríofa. Mar shampla, meaitneoidh an bliain 10000 anois ós rud é nach bhfuil sláimhreacha na bliana srianta go díreach ceithre dhigit ar fad mar atá siad san abairt rialta.

Tá an fheidhm django.conf.urls.url () ``ó leaganacha roimhe seo ar fáil anois mar: func: `django.urls.re_path`. an sean-áit fós le haghaidh comhoiriúnacht ar ais, gan díghabháil atá le teacht. Is féidir an sean-fheidhm ``django.conf.urls.include () `allmhairithe anois ó ``django.urls ``ionas gur féidir leat ``ó django.urls allmhairiú include, path, re_path a úsáid i do URLConfs.

Athscríobhtar an doiciméad:doc: /topics/http/urls chun an comhréiteach nua a thaispeáint agus tuilleadh sonraí a sholáthar.

contrib.admin` atá cairdiúil don soghluaisteLink to this heading

Tá an riarthóir sofhreagrach anois agus tacaíonn sé le gach mórghléas soghluaiste. D’fhéadfadh leibhéil éagsúla díghrádaithe a bheith ag brabhsálaithe níos sine.

Nathanna fuinneoigeLink to this heading

Ligeann an léiriú nua:class: ~django.db.Models.Expressions.Window clásal OVER a chur le fiosraitheanna. <aggregation-functions>Is féidir leat:ref: feidhmeanna fuinneog <window-functions>`agus:ref: `feidhmeanna comhiomlána a úsáid sa abairt.

MionghnéitheLink to this heading

django.contrib.adminLink to this heading

django.contrib.authLink to this heading

  • Méadaítear an líon athraithe réamhshocraithe don hasher pasfhocal PBKDF2 ó 36,000 go 100,000.

django.contrib.gisLink to this heading

  • <distance-lookups>Cuireadh tacaíocht MySQL leis an bhfeidhm: class: ~django.contrib.gis.db.models.functions.asgeojson, :class: ~django.contrib.gis.db.models.functions.geohash feidhm, :class: ~django.contrib.db.models.functions.is feidhm, :lookup: validisvalid, lookup agus:ref: `cuardach achair `.

  • Cuireadh se:class: ~django.contrib.gis.db.models.functions.azimuth agus:class: ~django.contrib.gis.db.models.functions.lineLocatePoint feidhmeanna, le tacaíocht ar PostGIS agus Spatialite.

  • Aon: Class: ~django.contrib.gis.geos.geosgeometry allmhairithe ó GeoJSON tá a tacar SRID anois.

  • Cuireadh tréith: attr: .osmwidget.default_zoom leis chun leibhéal súmáil réamhshocraithe an léarscáileáin a shaincheapadh.

  • Rinneadh meiteashonraí inléite agus in-eagarthóireachta ar rasters trí:attr: ~django.contrib.gis.gdal.gdalraster.metadata, :attr: ~django.contrib.gis.gdal.gdalraster.info, agus:attr: ~django.contrib.gis.gdalband.metadata.

  • Ceadaítear roghanna cruthaithe tiománaí go sonrach a rith chuig: aicme: ~django.contrib.gis.gdal.gdalraster rudaí ag baint úsáide as papsz_options`.

  • Ceadaítear rudaí a chruthó:class: ~django.contrib.gis.gdal.gdalraster i gcóras comhaid fíorúil inmheánach GDAL. <gdal-raster-vsimem>Is féidir le Rasters a bheith anois: ref: `cruthaithe ó shonraí dénártha `i gcuimhne agus a thiontú go sonraí dénártha.

  • <django.contrib.gis.gdal.GDALBand.color_interp>Tugann an modh nua:meth: `gdalband.color_interp () `an léirmhíniú datha don bhanda ar ais.

django.contrib.postgresLink to this heading

  • Cinneann an argóint nua distint do:class: ~django.contrib.postgres.aggregates.ArrayAgg an mbeidh luachanna comhtháite ar leith.

  • Tugann an fheidhm bunachar sonraí nua:class: ~django.contrib.postgres.functions.randomuuid leagan 4 UUID ar ais. Éilíonn sé síneadh pgcrypto` PostgreSQL a úsáid ar féidir a ghníomhachtú ag baint úsáide as an oibríocht imirce nua:class: ~django.contrib.postgres.operations.cryptoextension.

  • django.contrib.postgres.indexes.GinIndex now supports the fastupdate and gin_pending_list_limit parameters.

  • Ceadaíonn an rang nua:class: ~django.contrib.postgres.indexes.gistIndex innéacsanna Gist` a chruthú sa bhunachar sonraí. Suiteálann an oibríocht imirce nua:class: ~django.contrib.postgres.operations.btreeGistExtension an síneadh btree_gist chun tacaíocht a chur le haghaidh ranganna oibreora nach bhfuil ionsuite.

  • inspectdb can now introspect JSONField and various RangeFields (django.contrib.postgres must be in INSTALLED_APPS).

django.contrib.sitemapsLink to this heading

  • Chuir an argóint eochairfhocal ``protocol` leis an tógálaí:class: ~django.contrib.siteMaps.GenericSiteMap.

CacheLink to this heading

  • Tugann ``cache.set_many () ``liosta eochracha ar ais anois ar theip orthu a chur isteach. Maidir leis na cúltaca ionsuite, ní féidir iontráil theip a tharlú ach ar memcached.

Stóráil ComhadLink to this heading

  • File.open() can be used as a context manager, e.g. with file.open() as f:.

FoirmeachaLink to this heading

  • Ceadaíonn na hargóintí nua date_attrs agus time_attrs do:class: ~django.forms.splitDateTimeWidget agus:class: ~django.forms.splithiddendateTimeWidget tréithe HTML éagsúla a shonrú do na fo-ghuirdeanna DateInput` agus TimeInput` (nó i bhfolach).

  • Tugann an modh nua:meth: `form.errors.get_json_data () <django.forms.Form.errors.get_json_data>`earráidí foirme ar ais mar fhoclóir atá oiriúnach lena n-áireamh i bhfreagra JSON.

Tuairimí cineálachaLink to this heading

  • Ceadaíonn an tréith nua:attr: .contextMixin.extra_context comhthéacs a chur i ``View.as_view () ``.

Orduithe BainistíochtaLink to this heading

  • : djadmin: aistríonn inspectdb anois colúin sláimhir neamhshínithe MySQL go PositiveIntegerFieldPositiveSmallIntegerField.

  • Rialaíonn an rogha nua:option: makemessages --add-location an fhormáid tráchta i gcomhaid .po.

  • <loading-fixtures-stdin>:djadmin: Is féidir le loaddata anois:ref: `léamh ó stdin `.

  • Ligeann an rogha nua:option: diffsettings --output an t-aschur a fhormáidiú i bhformáid diff aontaithe.

  • Ar Oracle, is féidir le: djadmin: inspectdb iontráil anois Autofield má chruthaítear an colún mar cholún aitheantais.

  • Ar MySQL, tacaíonn: djadmin: dbshell le deimhnithe TLS ar thaobh an chliaint anois.

ImirceLink to this heading

  • Ligeann an rogha nua:option: squashmigrations --squashed-name an imirce squashed a ainmniú.

SamhlaLink to this heading

  • Faigheann an fheidhm bunachar sonraí nua:class: ~django.db.models.functions.strIndex innéacs tosaigh teaghrán taobh istigh de shreang eile.

  • < https://docs.oracle.com/en/database/oracle/oracle-database/21/drdaa/ intro-to-tools-and-products-supporting-migraiton.html #GUID -14E4817B-F3BC-4D99 -B471-A0ACDC303CC9>Ar Oracle, cruthaítear AutoField agus BigAutoField anois mar `colúin aitheantais `__.

  • Rialaíonn an paraiméadar nua chunk_size de:meth: .queryset.iterator líon na sraitheanna a fhaigheann cliant bunachar sonraí Python agus torthaí á sruthú ón mbunachar sonraí. Maidir le bunachair sonraí nach dtacaíonn le cúrsóirí taobh an fhreastalaí, rialaíonn sé líon na dtorthaí a fhaigheann Django ón oiriúnóir bunachar sonraí.

  • <django.db.models.Options.get_latest_by>:meth: .querySet.Earliest, :meth: .queryset.latest, agus:attr: `Meta.get_latest_by `ceadaíonn ordú anois ag roinnt réimsí.

  • Chuir an fheidhm: class: ~django.db.Models.Functions.ExtractQuarter leis chun an ráithe a bhaint ó:class: ~django.db.models.dateField agus:class: ~Django.db.Models.DateTimeField, agus nochtaigh sé tríd an cuardach: quarter.

  • Cuireadh an fheidhme:class: ~django.db.models.functions.truncQuarter leis an bhfeidhm chuig: class: ~Django.db.Models.DateField agus:class: ~Django.db.Models.DateTimeField go dtí an chéad lá den ráithe.

  • Cuireadh paraiméadar: attr: ~django.db.models.index.db_TableSpace le hinnéacsanna aicme-bhunaithe.

  • Má thacaíonn an bunachar sonraí le réimse dúchasach fad (Oracle agus PostgreSQL), oibríonn:: class: ~Django.db.Models.Functions.Extract anois len:class: ~Django.db.Models.DurationField.

  • Added the of argument to QuerySet.select_for_update(), supported on PostgreSQL and Oracle, to lock only rows from specific tables rather than all selected tables. It may be helpful particularly when select_for_update() is used in conjunction with select_related().

  • Ligeann paraiméadar nua field_name de:meth: .queryset.in_bulk torthaí a fháil bunaithe ar aon réimse samhail uathúil.

  • CursorWrapper.callproc() now takes an optional dictionary of keyword parameters, if the backend supports this feature. Of Django's built-in backends, only Oracle supports it.

  • Ceadaíonn an modh nua:meth: connection.execute_wrapper () </topics/db/instrumentation> <django.db.backends.base.DatabaseWrapper.execute_wrapper>: doc: `fillteáin a shuiteáil timpeall ceisteanna bunachar sonraí a fhorghníomhú.

  • Ceadaíonn an argóint nua scagair le haghaidh comhiomláin ionsuite: ref: `coinníollacha éagsúla a chur leis na comhiomlánaithe iolracha thar na réimsí nó na caidrimh cé <conditional-aggregation>anna.

  • <django.db.models.Options.ordering>Tacaíocht bhreise le haghaidh abairtí in:attr: `Meta.ording `.

  • Ceadaíonn an paraiméadar nua ``ainmnithe ``de:meth: .queryset.values_list torthaí a fháil mar tuples ainmnithe.

  • Ceadaíonn an rang nua:class: .filteredRelation clásal ON a chur le fiosraitheanna.

LeathanaighLink to this heading

  • Cuireadh leis: Meth: `Paginator.get_page () <django.core.paginator.Paginator.get_page>`chun an patrún doiciméadaithe maidir le láimhseáil uimhreacha leathanaigh neamhbhailí a sholáthar.

Iarrataí agus FreagraíLink to this heading

  • Tacaíonn freastalaí gréasáin djaDmin: runserver le HTTP 1.1.

TeimpléidLink to this heading

  • Chun úsáideacht: meth: .engine.get_default a mhéadú in aipeanna tríú páirtí, filleann sé an chéad inneall anois má chuirtear ilinnill DjangoTemplates ``cumraithe i `TEMPLATES seachas ImproperlyConfigured a ardú.

  • Féadfaidh clibeanna teimpléid saincheaptha glacadh le hargóintí eochairfhocail amháin.

TástálachaLink to this heading

  • Cuireadh tacaíocht snáithe leis chuig: class: ~django.test.liveservertestcase.

  • Socruithe breise a cheadaíonn na paraiméadair spás tábla tástála a shaincheapadh do Oracle: :setting: DATAFILE_SIZE, :setting: DATAFILE_TMP_SIZE, :setting: DATAFILE_EXTSIZE, agus:setting: DATAFILE_TMP_EXTSIZE.

BailíochtóiríLink to this heading

  • Ní cheadaíonn an nua:class: .prohibitNullCharactersValidator an carachtar null i ionchur an réimse foirme:class: ~django.forms.charfield agus a fho-aicmí. Breathnaíodh ionchur carachtar null ó uirlisí scanadh leochaileachta Caitheann an chuid is mó de na bunachair sonraí carachtair neall go ciúin, ach ardaíonn psycopg2 2.7+ eisceacht agus tú ag iarraidh carachtar neall a shábháil i réimse char/téacs le PostgreSQL.

Athruithe neamh-chomhoiriúnacha ar ais i 2.0Link to this heading

Tacaíocht bainte le haghaidh bytestrings in áiteanna áiritheLink to this heading

Chun tacú le teaghráin dúchasacha Python 2, b'éigean do leaganacha níos sine Django glacadh le teaghráin bytestrings agus teaghráin Unicode araon. Anois go bhfuil tacaíocht Python 2 titim, níor cheart teacht le bytestrings ach timpeall teorainneacha ionchuir/aschuir (láimhseáil réimsí dénártha nó sruthanna HTTP, mar shampla). B'fhéidir go mbeidh ort do chód a nuashonrú chun úsáid bytestring a theorannú go dtí a laghad, mar ní ghlacann Django le bytestrings i gcosáin cód áirithe a thuilleadh. Python's:option: d'fhéadfadh rogha -b cabhrú leis an botún sin i do chód a bhrath.

Mar shampla, úsáideann reverse () ``anois ``str () in ionad ``force_text () chun na args` agus kwar`gs` a fhaigheann sé a chur faoi iallach sula gcuirtear iad a shocrú sa URL. Maidir le bytestrings, cruthaíonn sé seo sreang le réimír b neamh-inmhianaithe chomh maith le luachana breise (str (b'foo') ``is ````b'foo'"). Chun oiriúnú, glaoigh ar decode () ``ar an mbytestring sula ndéantar é a chur chuig ``reverse ()`.

API cúltaca bunachar sonraíLink to this heading

Déanann an rannán seo cur síos ar athruithe a d’fhéadfadh a bheith ag teastáil ar dhroim bhunachar sonraí tríú páirtí.

  • Ní fhilleann na modhanna DatabaseOperations.dateTime_Cast_Date_SQL () ``, `datetime_cast_time_sql (), datetime_trunc_sql () `, datetime_extract_sql ()`, agus ``date_interval_sql () ``ach an SQL a dhéanamh chun an oibríocht a dhéanamh in ionad SQL agus SQL liosta de na paraiméadair.

  • Ba chóir go gcuirfeadh cúltaca bunachar sonraí tríú páirtí tréith DatabaseWrapper.display_name leis ainm an bhunachar sonraí a oibríonn do chúltaca leis. Féadfaidh Django é a úsáid i dteachtaireachtaí éagsúla, mar shampla i seiceálacha córais.

  • An chéad argóint de SchemaEditor. Is é _alter_column_type_sql () ``anois ``samhail seachas ``tábla ``.

  • An chéad argóint de SchemaEditor. Is é _create_index_name () ``anois ``table_name seachas model.

  • Chun tacaíocht FOR UPDATE OF ``a chumasú, socraigh databaseFeatures.HAS_SELECT_FOR_UPDATE_OF = True``. Má éilíonn an bunachar sonraí go mbeidh na hargóintí le OF` ná colúin seachas táblaí, socraigh databaseFeatures.select_for_update_of_column = True.

  • Chun tacaíocht do: class: ~Django.db.Models.Expressions.Window a chumasú, socraigh DatabaseFeatures.supports_over_clause go True. B'fhéidir go mbeidh ort na modhanna databaseOperations.window_start_rows_start_end () ``agus/nó ``window_start_range_start_end () a shaincheapadh.

  • Ba chóir go gcuirfeadh cúltaca bunachar sonraí tríú tríú tríú tréith databaseOperations.cast_char_field_without_max_length ``leis an gcineál sonraí bunachar sonraí a úsáidfear san fheidhm :class: `~django.db.models.functions.cast` le haghaidh ``charfield mura gcuirtear an argóint max_length`.

  • An chéad argóint de DatabaseCreation. Is é _clone_test_db () ``agus ``get_test_db_clone_settings () anois suffix seachas uimhre (i gcás gur mhaith leat na sínithe i do chúlcheann a athainmniú le haghaidh comhsheasmhachta). Téann django.test anois ar na luachanna sin mar shreangáin seachas mar shláimhreacha.

  • Ba chóir go gcuirfeadh cúltaca bunachar sonraí tríú páirtí modh DatabaseIntrospection.get_sequences () a chur leis bunaithe ar an stub i ``BaseDatabaseIntrospection`.

Tacaíocht titim do Oracle 11.2Link to this heading

Is é deireadh na tacaíochta suas srutha do Oracle 11.2 ná Nollaig 2020. Tacófar le Django 1.11 go dtí Aibreán 2020 a shroicheann beagnach an dáta seo. Tacaíonn Django 2.0 go hoifigiúil le Oracle 12.1+.

Léitear leibhéal aonrúcháin réamhshocraithe MySQLLink to this heading

D'fhéadfadh leibhéal aonrú réamhshocraithe MySQL, inléite athsheolta, a bheith ina chúis le caillteanas sonraí i ngnáthúsáid Chun é sin a chosc agus chun comhsheasmhacht le bunachair sonraí eile, léitear an leibhéal aonraithe réamhshocraithe tiomanta <mysql-isolation-level>Is féidir leat an socrú: setting: DATABASES a úsáid chó:ref: `úsáid leibhéal aonraithe difriúil `, más gá.

<django.contrib.auth.models.User.last_name>:attr: `Abstractuser.last_name ```max_length ``méadaithe go 150Link to this heading

Tá imirce le haghaidh: attr: django.contrib.auth.models.user.last_name san áireamh. Má tá samhail úsáideora saincheaptha agat ag oidhreacht ó ``AbstractUser`, beidh ort imirce bunachar sonraí a ghiniúint agus a chur i bhfeidhm do do mhúnla úsáideora.

Más mian leat an teorainn 30 carachtar d'ainmneacha deireanacha a chaomhnú, bain úsáid as foirm saincheaptha:

Code
from django.contrib.auth.forms import UserChangeForm


class MyUserChangeForm(UserChangeForm):
    last_name = forms.CharField(max_length=30, required=False)

Más mian leat an srian seo a choinneáil sa riarachán agus tú ag eagarthóireacht úsáideoirí, socraigh UserAdmin.form chun an fhoirm seo a úsáid:

Code
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)

Tá cosc ar QuerySet.reverse () ``agus ``last () tar éis slisnúLink to this heading

Mar thoradh ar QuerySet.reverse () ``nó ``last () a ghlaoch ar shraith cheisteanna slisnaithe bíonn torthaí gan choinne mar gheall ar an slisnacht á chur i bhfeidhm tar éis athordú. Tá cosc air seo anois, m.sh.:

Python console
>>> Model.objects.all()[:2].reverse()
Traceback (most recent call last):
...
TypeError: Cannot reverse a query once a slice has been taken.

Ní ghlacann réimsí foirme le hargóintí roghnacha a thuilleadh marLink to this heading

Chun cabhrú le hearráidí reatha a chosc mar gheall ar ordú mícheart argóintí réimse foirme, ní ghlactar le hargóintí roghnacha réimsí foirme ionsuite mar argóintí seasaim Mar shampla:

Code
forms.IntegerField(25, 10)

ardaíonn eisceacht agus ba chóir na nithe seo a leanas a chur in ionad:

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

Bailíonn ``call_command () ``na roghanna a fhaigheann séLink to this heading

Bailíonn call_command () ``anois go sainmhíníonn parser argóint an ordaithe atá á glaoch ar na roghanna go léir a chuirtear chuig ``call_command ().

Maidir le horduithe bainistíochta saincheaptha a úsáideann roghanna nach cruthaíodh ag baint úsáide as parser.add_argument () `, cuir tréith ``stealth_options` ar an ordú:

Code
class MyCommand(BaseCommand):
    stealth_options = ("option_name", ...)

Ní ghlacann innéacsanna le hargóintí seasaimh a thuilLink to this heading

Mar shampla:

Code
models.Index(["headline", "-pub_date"], "index_name")

ardaíonn eisceacht agus ba chóir na nithe seo a leanas a chur in ionad:

Code
models.Index(fields=["headline", "-pub_date"], name="index_name")

Tá príomhshrianta eachtracha cumasaithe anois ar SQLiteLink to this heading

Beidh sé seo le feiceáil mar athrú neamh-chomhoiriúnach ar chúl (``IntegrityError: theip ar srian EOCHAIR FOREIGN ``) má dhéanann iarracht samhail shampla atá ann cheana a shábháil atá ag sárú srian eochair eachtrach.

Cruthaítear eochracha eachtracha anois le DEFERRABLE INICIALLY ATFERRED in ionad IDIRLEABLE IMMEDIATE. Dá bhrí sin, b'fhéidir go gcaithfear táblaí a atógáil chun eochracha eachtracha a athchruthú leis an sainmhíniú nua, go háirithe má tá patrún mar seo á úsáid agat:

Code
from django.db import transaction

with transaction.atomic():
    Book.objects.create(author_id=1)
    Author.objects.create(id=1)

Mura ndéanann tú an eochair eachtrach a athchruthú mar ``DEFERRED`, theip ar an gcéad ``create () ``anois go ndéantar srianta eochairí eachtracha i bhfeidhm.

Cúltaca do bhunachar sonraí ar dtús Tar éis duit uasghrádú a dhéanamh go Django 2.0, is féidir leat táblaí a atógáil ag baint úsáide as script cosúil leis seo:

Code
from django.apps import apps
from django.db import connection

for app in apps.get_app_configs():
    for model in app.get_models(include_auto_created=True):
        if model._meta.managed and not (model._meta.proxy or model._meta.swapped):
            for base in model.__bases__:
                if hasattr(base, "_meta"):
                    base._meta.local_many_to_many = []
            model._meta.local_many_to_many = []
            with connection.schema_editor() as editor:
                editor._remake_table(model)

Níor fuair an script seo tástáil fhairsing agus teastaíonn oiriúnú de dhíth le cásanna éagsúla mar iolracha bunachair Ná bíodh leisce ort feabhsuithe a chur leis.

Ina theannta sin, mar gheall ar theorannú athraithe tábla ar SQLite, tá sé toirmiscthe oibríochtaí: Class: ~Django.db.Migrations.Operations.RenameModel agus:class: ~django.db.migrations.operations.RenameField a dhéanamh ar mhúnlaí nó réimsí dá dtagraíonn samhlacha eile in idirbheart. D'fhonn ligean imirce ina bhfuil na hoibríochtaí seo a chur i bhfeidhm, ní mór duit an tréith ``Migration.Atomic` a shocrú go False.

IlghnéitheachLink to this heading

  • Baintear an rang SessionAuthenticationMiddleware as. Níor chuir sé feidhmiúlacht ar bith ar fáil ós rud é go bhfuil fíordheimhniú seisiún cumasaithe gan choinníoll in Django 1.10.

  • Tá na láimhseálaithe réamhshocraithe earráide HTTP (`` láimhseálaí404``, etc.) inghlaoite anois in ionad teaghráin chonair Python poncaithe. Is fearr le Django tagairtí inghlaoite toisc go soláthraíonn siad feidhmíocht níos fearr agus taithí dífhabhtaithe.

  • RedirectView no longer silences NoReverseMatch if the pattern_name doesn't exist.

  • Nuair a bhíonn USE_L10N` as, :class: ~django.forms.floatfield agus:class: ~django.forms.decimalfield anois:setting: DECIMAL_SEPARATOR agus:setting: THOUSAND_SEPARATOR agus: setting: THOUSAND_SEPARATOR le linn bailíochtaithe. Mar shampla, leis na socruithe:

    Code
    USE_L10N = False
    USE_THOUSAND_SEPARATOR = True
    DECIMAL_SEPARATOR = ","
    THOUSAND_SEPARATOR = "."
    

    déantar ionchur de "1.345"` a thiontú anois go ``1345 in ionad ``1.345 ``.

  • Níl fo-aicmí de AbstractBaseUser ag teastáil a thuilleadh chun get_short_name() agus get_full_name() a chur i bhfeidhm. (Baintear na bunfheidhmithe a ardaíonn NotImplementedError.) Úsáideann django.contrib.admin na modhanna seo má chuirtear i bhfeidhm iad ach níl siad de dhíth. B’fhéidir gur mhaith le haipeanna tríú páirtí a úsáideann na modhanna seo cur chuige comhchosúil a ghlacadh.

  • Coinnítear na socruithe formáide FIRST_DAY_OF_WEEK agus NUMBER_GROUPING anois mar shláimhreacha in aschuir amharc JavaScript agus JSON i18n.

  • assertNumQueries() now ignores connection configuration queries. Previously, if a test opened a new database connection, those queries could be included as part of the assertNumQueries() count.

  • Méadaítear méid réamhshocraithe spáis tábla tástála Oracle ó 20M go 50M agus méadaítear an méid réamhshocraithe uathoibríoch ó 10M go 25M.

  • Chun feidhmíocht a fheabhsú agus tacair mhóra torthaí á sruthú ón mbunachar sonraí, faigheann: meth: .queryset.iterator 2000 sraitheanna ag an am anois in ionad 100. Is féidir an sean-iompar a athbhunú ag baint úsáide as an paraiméadar chunk_size. Mar shampla:

    Code
    Book.objects.iterator(chunk_size=100)
    
  • Ardaíonn ainmneacha pacáiste anaithnid a sholáthar san argóint packages den :class: ~django.views.i18n.javascriptCatalog amharc valueError anois in ionad dul go ciúin.

  • Tá príomh-eochair samhail le feiceáil anois sa réamhshocraithe Samhail. __str__ () ``modh, m.sh. ``Rud ceist (1).

  • Aimsíonn makemigrations athruithe anois ar an réimse samhail limit_choices_to rogha. Cuir é seo le do imirce atá ann cheana nó glac le himirce a ghintear go huathoibríoch do réimsí a úsáideann é.

  • Ardaíonn fiosrúcháin a dteastaíonn uathoibrí:ref: claochluithe spásúla uathoibríoch <automatic-spatial-transformations>`anois `NotImplementederror` ar MySQL in ionad geoiméadraí neamh-chlaochlaithe a úsáid go ciúin.

  • Baintear Django.Core.Exceptions.djangoruntimeWarning. Ní úsáideadh é ach sa chúltaca taisce mar rang idirmheánach in oidhreacht `CachekeyWarning de RuntimeWarning`.

  • Athainmníodh BaseExpression. _output_field go output_field. B'fhéidir go mbeidh ort nathanna saincheaptha a nuashonrú.

  • I leaganacha níos sine, comhcheanglaíonn foirmeacha agus foirmeacha a gcuid Meáin ``le giuirléid ``Meáin tríd an dá cheann a chomhcheangal. <form-media-asset-order>Déanann an comhcheangal iarracht anois:ref: ord coibhneasta eilimintí i ngach liosta a chaomhnú `. Eisítear ``MediaOrderConflictwarning` mura féidir an t-ordú a chaomhnú.

  • Baintear Django.contrib.gis.gdal.ogrexception. Is ailias é do GdalException ó Django 1.8.

  • Titeann tacaíocht do GEOS 3.3.x.

  • Athraítear an bealach a roghnaítear sonraí le haghaidh GeometryField` chun feidhmíocht a fheabhsú, agus i gceisteanna SQL amh, caithfear na réimsí sin a fhilleadh anois in `connection.ops.select. Féach na:ref: `Nóta ceisteanna amh <gis-raw-sql>`sa rang teagaisc GIS mar shampla.

Gnéithe atá díscríofa i 2.0Link to this heading

Argóint context de Field.from_DB_Value () ``agus ``Expression.convert_Value ()`Link to this heading

Ní úsáidtear an argóint context de Field.from_DB_Value () ``agus ``Expression.convert_VALUE ()` mar is foclóir folamh é i gcónaí. Is é síniú an dá mhodh anois:

Code
(self, value, expression, connection)

in ionad:

Code
(self, value, expression, connection, context)

Fanann tacaíocht don seanshíniú i réimsí saincheaptha agus nathanna go dtí Django 3.0.

IlghnéitheachLink to this heading

  • Tá an modúl django.db.backends.postgresql_psycopg2 a dhíchur i bhfabhar django.db.backends.postgresql. Tá sé ina ainm ó Django 1.9. Ní théann sé seo ach ar chód a allmhairíonn ón modúl go díreach. Is féidir leis an socrú DATABASES django.db.backends.postgresql_psycopg2'` a úsáid fós, gur féidir leat é sin a shimpliú tríd an ainm ``'django.db.backends.postgresql' a chuirtear i Django 1.9 a úsáid.

  • ``django.shortcuts.render_to_response () ``luasghabháilte i bhfabhr:func: django.shortcuts.render. Glacann ``render () ``na hargóintí céanna ach amháin go dteastaíonn ``iarraidh` uaidh freisin.

  • Tá an socrú DEFAULT_CONTENT_TYPE imithe i léig. Ní idirghníomhaíonn sé go maith le haipeanna tríú páirtí agus tá sé imithe i léig toisc gur tháinig HTML5 in ionad XHTML den chuid is mó.

  • HttpRequest.xReadLines () a dhíchur i bhfabhar athraithe thar an iarratas.

  • Tá an argóint eochairfhocal field_name` to:meth: .querySet.Earliest agus:meth: .queryset.latest a dhíchur i bhfabhar ainmneacha na réimse a rith mar argóintí. Scríobh .early ('pub_date') ``in ionad ``.early (field_name='pub_date').

Gnéithe bainte i 2.0Link to this heading

Tá na gnéithe seo tar éis deireadh a dtimthriall díscrúdaithe bainte amach agus baintear iad i Django 2.0.

Féach: Ref: deprecated-features-1.9 le haghaidh sonraí faoi na hathruithe seo, lena n-áirítear conas úsáid na ngnéithe seo a bhaint.

  • Baintear an argóint lag chuig ``Django.Dispatch.Signals.Signal.Disconnect () ``.

  • Baintear ``Django.db.backends.base.basedatabaseOperations.check_aggregate_support () ``.

  • Baintear an pacáiste django.forms.extras.

  • Baintear an cúntóir assignment_tag.

  • Baintear an argóint óst chuig ``simpletestCase.assertsRedirectes () ``. Baintear an ciseal comhoiriúnachta a ligeann URLanna iomlána a mheas comhionann le cinn coibhneasta nuair a bhíonn an cosán comhionann freisin.

  • Baintear Field.rel agus Field.remote_field.to.

  • Tá an argóint on_delete` le haghaidh ForeignKey` agus Onetoonefield ag teastáil anois i samhlacha agus imirce. Smaoinigh ar imirce a scrúdú ionas go mbeidh níos lú díobh agat le nuashonrú.

  • Baintear ``django.db.models.fields.add_lazy_relations () ``.

  • Nuair a chumasaítear tacaíocht crios ama, ní thiontaíonn cúltaca bunachar sonraí nach dtacaíonn le criosanna ama amanna dáta feasacha go luachanna naif i UTC a thuilleadh nuair a chuirtear luachanna den sórt sin mar pharaiméadair chuig ceisteanna SQL a fhorghníomhaítear lasmuigh den ORM, m.sh. le `cursor.executar () `.

  • Baintear ``django.contrib.auth.tests.utils.skipifCustomUser () ``.

  • Baintear na ranganna Geomanager agus GeoquerySet.

  • Baintear an modúl django.contrib.gis.geoip.

  • Baintear an seiceáil supports_recursion le haghaidh luchtaitheoirí teimpléad as:

    • ``Django.Template.Engine.Engine.Find_Template () ``

    • ``Django.Template.Loader_Tags.ExtendSnode.Find_Template () ``

    • ``Django.Template.Loaders.Base.Loader.Supports_Recursion () ``

    • ``Django.Template.Loaders.Cached.Loader.Supports_Recursion () ``

  • Baintear na modhanna lódóra teimpléad load_template agus load_template_sources.

  • Baintear an argóint template_dirs le haghaidh luchtaitheoirí teimpléad:

    • ``Django.Template.Loaders.Base.Loader.Get_Template () ``

    • ``Django.Template.Loaders.Cached.Loader.Cache_key () ``

    • ``Django.Template.Loaders.Cached.Loader.Get_Template () ``

    • ``Django.Template.Loaders.Cached.Loader.Get_Template_Sources () ``

    • ``Django.Template.Loaders.FileSystem.Loader.Get_Template_Sources () ``

  • ``Django.Template.Loaders.Base.Loader. Baintear __call__ () ``.

  • Baintear tacaíocht do thuairimí earráide saincheaptha nach nglacann le paraiméadar ``eisceacht'.

  • Baintear an tréith mime_type de Django.Utils.FeedGenerator.Atom1Feed` agus Django.Utils.FeedGenerator.rssFeed.

  • Baintear an argóint app_name le include () `.

  • Baintear tacaíocht chun 3 tuple a rith (lena n-áirítear admin.site.urls) mar an chéad argóint le include () `.

  • Baintear tacaíocht chun spás ainmneacha sampla URL a shocrú gan spás ainmneacha feidhmchláir.

  • ``Réimse. Baintear _get_val_from_obj () ``.

  • Baintear Django.Template.Loaders.Eggs.Loader.

  • Baintear an paraiméadar current_app chuig na tuairimí bunaithe ar fheidhm contrib.auth.

  • Baintear an argóint eochairfhocal callable_obj chuig ``simpletestCase.assertRaisesMessage () ``.

  • Baintear tacaíocht don tréith allow_tags` ar mhodhanna ModelAdmin.

  • Baintear an argóint eochairfhocal enclosure le SyndicationFeed.add_item () `.

  • Baintear na hainmneacha Django.Template.LoaderOrigin agus Django.Template.Base.StringOrigin le haghaidh Django.Template.Base.Origin.

Féach:ref: deprecated-features-1.10 le haghaidh sonraí faoi na hathruithe seo.

  • Baintear an rogha makemigrations --exit.

  • Baintear tacaíocht do shannadh díreach le heochair eachtrach droim nó gaol go leor.

  • Baintear na modhanna get_srid () ``agus ``set_srid () de django.contrib.gis.geos.geosgeometry`.

  • Baintear na modhanna get_x () ``, `set_x (), get_y () `, set_y ()`, get_z () `, agus set_z () modhanna django.contrib.gis.geos.point.

  • Baintear na modhanna get_coords () ``agus ``set_coords () de django.contrib.gis.geos.point`.

  • Baintear maoin cascaded_union de Django.contrib.gis.geos.multipolygon`.

  • Baintear ``django.utils.functional.allow_lazy () ``.

  • Baintear an rogha ``shell --plain ``.

  • Baintear an modúl django.core.urlresolvers i bhfabhar a shuíomh nua, django.urls.

  • Baintear CommaseParatedIntegerField, ach amháin le haghaidh tacaíochta in imirce stairiúla.

  • Baintear an modh teimpléad ``Context.has_key () ``.

  • Baintear tacaíocht do na modhanna django.core.files.storage.accessed_Time () ``, `created_time (), agus modified_time () `.

  • Baintear tacaíocht le haghaidh cuardaigh fiosrúcháin ag baint úsáide as ainm an tsamhail nuair a shocraítear Meta.default_RELATED_NAME.

  • Baintear an cuardach MySQL __search.

  • Baintear an shim chun tacú le ranganna bainisteora saincheaptha gan modh ``_apply_rel_filters () `.

  • Ní thacaítear a thuilleadh le User.is_Authenticated () ``agus ``User.is_Anonymous ()` a úsáid mar mhodhanna seachas airíonna.

  • An Samhail. Baintear tréith _meta.virtual_fields.

  • Na hargóintí eochairfhocal virtual_only i field.contribute_to_class () ``agus ``fíorúil` i Samhail. Baintear _meta.add_field () `.

  • Baintear na tuairimí javascript_catalog () ``agus ``json_catalog ()`.

  • Baintear ``django.contrib.gis.utils.precision_wkt () ``.

  • In oidhreacht il-tábla, baintear cur chun cinn intuigthe OneToonefield go parent_nasc.

  • Tacaíocht do ``Giuirléid. Baintear _format_value () ``.

  • Baintear modhanna filefield get_directory_name () ``agus ``get_filename ()`.

  • Baintear an fheidhm mark_for_escaping () ``agus na ranganna a úsáideann sé: ``EscapeData, EscapeBytes`, EscapeText`, EscapeString`, agus EscapeUnicode.

  • Úsáideann an scagaire escape anois ``django.utils.html.conditional_escape () ``.

  • Baintear Manager.Use_for_Related_Fields.

  • Leanann oidhreacht mhúnla Bainiste rialacha oidhreachta MRO. Baintear an riachtanas chun Meta.Manager_Inheritance_From_Future` a úsáid chun roghnú isteach san iompar.

  • Baintear tacaíocht do middleware sean-stíl ag baint úsáide as settings.middleware_classes`.