Django 1.9.2 release notes

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 ConditionalGetMiddleware som orsakade att If-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=True eller unique=True till ett CharField eller TextField som 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 till unique=True till ett fält som redan listas i unique_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 en ManyToManyField through-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 är True på distributioner som ökar SQLITE_MAX_VARIABLE_NUMBER kompileringstidsgränsen till över 2000, såsom Debian (#26063).

  • Fixade en krasch när man använder en omvänd OneToOneField i ModelAdmin.readonly_fields (#26060).

  • En krasch inträffade när kommandot migrate anropades i ett testfall med attributet available_apps som pekade på en applikation med migreringar inaktiverade med inställningen MIGRATION_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 attributet Node.origin (#25848`).

  • Åtgärdade en regression i Django 1.8.5 som bröt kopiering av ett SimpleLazyObject med copy.copy() (#26122`).

  • Inkluderade alltid geometry_field i GeoJSON-serialisatorns utdata oavsett parametern fields (#26138).

  • Fixade kartwidgetarna contrib.gis när USE_THOUSAND_SEPARATOR=True används (#20415).

  • Gjorde att ogiltiga formulär visade de initiala värdena för deras inaktiverade fält (#26129).