Django 1.9.2 versionsinformation¶
1 februari 2016
Django 1.9.2 åtgärdar en säkerhetsregression i 1.9 och flera buggar i 1.9.1. Den gör också en liten bakåtkompatibel förändring som förhoppningsvis inte påverkar några användare.
Säkerhetsproblem: Användare med behörigheten ”change” men inte ”add” kan skapa objekt för ModelAdmin med save_as=True¶
Om en ModelAdmin använder save_as=True (inte standard), ger administratören ett alternativ när du redigerar objekt för att ”Spara som ny”. En regression i Django 1.9 förhindrade att den formulärinlämningen gav upphov till ett ”Permission Denied”-fel för användare utan ”add”-behörighet.
Bakåtkompatibel ändring: .py-tpl-filer skrivs om i projekt/app-mallar¶
Tillägget av viss syntax för Djangos mallspråk till standardmallen för appar i Django 1.9 innebär att dessa filer nu har viss ogiltig Python-syntax. Detta orsakar svårigheter för paketeringssystem som ovillkorligen byte-kompilerar *.py-filer.
För att åtgärda detta används nu suffixet .py-tpl för de projekt- och appmallfiler som ingår i Django. Suffixet .py-tpl ersätts med .py av kommandona startproject och startapp. Till exempel kommer en mall med filnamnet manage.py-tpl att skapas som manage.py.
Skicka in ett ärende om du har en anpassad projektmall som innehåller .py-tpl-filer och tycker att detta beteende är problematiskt.
Buggrättningar¶
Åtgärdade en regression i
ConditionalGetMiddlewaresom orsakade attIf-None-Match-kontroller alltid returnerade HTTP 200 (#26024).Åtgärdade en regression som gjorde att objekten ”user-tools” visades på administratörens utloggningssida (#26035).
Fixade en krasch i översättningssystemet när det aktuella språket inte har några översättningar (#26046).
Åtgärdade en regression som gjorde att fel dag valdes när admin-kalenderwidgeten öppnades för tidszoner från GMT+0100 till GMT+1200 (#24980).
Åtgärdade en regression i admins popup-fönster för redigering av relaterad modell som gjorde att ett undangömt värde visades i rullgardinsmenyn i det överordnade fönstret (#25997).
Fixade en regression i 1.8.8 som orsakade felaktig indexhantering i migreringar på PostgreSQL när man lägger till
db_index=Trueellerunique=Truetill ettCharFieldellerTextFieldsom redan hade den andra specificerad, eller när man tar bort en av dem från ett fält som hade båda, eller när man lägger tillunique=Truetill ett fält som redan listas iunique_together(#26034`).Åtgärdade en regression där definitionen av en relation på en abstrakt modells fält med hjälp av ett strängmodellnamn utan en app_label inte längre löste referensen till den abstrakta modellens app om modellen användes i en annan applikation (#25858).
Fixade en krasch när du förstör en befintlig testdatabas på MySQL eller PostgreSQL (#26096).
Fixad CSRF cookie-kontroll på POST-förfrågningar när
USE_X_FORWARDED_PORT=True(#26094).Fixade en krasch i
QuerySet.order_by()vid beställning av ett relationsfält i enManyToManyFieldthrough-modell (#26092).Åtgärdade en regression som orsakade ett undantag när man gjorde databasfrågor på SQLite med mer än 2000 parametrar när
DEBUGärTruepå distributioner som ökarSQLITE_MAX_VARIABLE_NUMBERkompileringstidsgränsen till över 2000, såsom Debian (#26063).Fixade en krasch när man använder en omvänd
OneToOneFieldiModelAdmin.readonly_fields(#26060).En krasch inträffade när kommandot
migrateanropades i ett testfall med attributetavailable_appssom pekade på en applikation med migreringar inaktiverade med inställningenMIGRATION_MODULES(#26135).Återställde möjligheten för test- och felsökningsverktyg att avgöra vilken mall en nod kom ifrån, även under mallarv eller inkludering. Före Django 1.9 kunde felsökningsverktyg komma åt mallens ursprung från noden via
Node.token.source[0]. Detta var ett odokumenterat, privat API. Ursprunget är nu tillgängligt direkt på varje nod med hjälp av attributetNode.origin(#25848`).Åtgärdade en regression i Django 1.8.5 som bröt kopiering av ett
SimpleLazyObjectmedcopy.copy()(#26122`).Inkluderade alltid
geometry_fieldi GeoJSON-serialisatorns utdata oavsett parameternfields(#26138).Fixade kartwidgetarna
contrib.gisnärUSE_THOUSAND_SEPARATOR=Trueanvänds (#20415).Gjorde att ogiltiga formulär visade de initiala värdena för deras inaktiverade fält (#26129).