Mixins för enskilda objekt¶
SingleObjectMixin
¶
- class django.views.generic.detail.SingleObjectMixin¶
Tillhandahåller en mekanism för att leta upp ett objekt som är associerat med den aktuella HTTP-begäran.
Metoder och egenskaper
- model¶
Den modell som denna vy ska visa data för. Att ange
model = Foo
är i praktiken detsamma som att angequeryset = Foo.objects.all()
, därobjects
står förFoo
default manager <default-managers>`.
- queryset¶
En
QuerySet
som representerar objekten. Om det anges ersätter värdet förqueryset
det värde som anges förmodel
.Varning
queryset
är ett klassattribut med ett mutabelt värde så försiktighet måste iakttas när det används direkt. Innan du använder det, anropa antingen dessall()
-metod eller hämta det medget_queryset()
som tar hand om kloningen bakom kulisserna.
- slug_field¶
Namnet på det fält i modellen som innehåller sluggen. Som standard är
slug_field
'slug'
.
- slug_url_kwarg¶
Namnet på URLConf-nyckelordsargumentet som innehåller sluggen. Som standard är
slug_url_kwarg
'slug'
.
- pk_url_kwarg¶
Namnet på URLConf-nyckelordsargumentet som innehåller den primära nyckeln. Som standard är
pk_url_kwarg
'pk
.
- context_object_name¶
Anger namnet på den variabel som ska användas i sammanhanget.
- query_pk_and_slug¶
Om
True
, fårget_object()
att utföra sin sökning med hjälp av både primärnyckeln och sluggen. Standardvärdet ärFalse
.Detta attribut kan bidra till att mildra attacker med ”osäker direkt objektreferens”. När applikationer ger åtkomst till enskilda objekt med en sekventiell primärnyckel kan en angripare med brutalt våld gissa sig till alla URL:er och därigenom få en lista över alla objekt i applikationen. Om användare med åtkomst till enskilda objekt ska hindras från att få fram den här listan, kan inställningen
query_pk_and_slug
tillTrue
hjälpa till att förhindra gissning av webbadresser eftersom varje webbadress kräver två korrekta, icke sekventiella argument. Att använda en unik slug kan tjäna samma syfte, men det här schemat tillåter dig att ha icke-unika slugs.
- get_object(queryset=None)¶
Returnerar det enskilda objekt som denna vy kommer att visa. Om
queryset
anges kommer denna queryset att användas som källa för objekten; annars kommerget_queryset()
att användas.get_object()
letar efter ettpk_url_kwarg
-argument i argumenten till vyn; om detta argument hittas utför denna metod en primärnyckelbaserad sökning med hjälp av detta värde. Om detta argument inte hittas letar den efter ettslug_url_kwarg
-argument och utför en slug-uppslagning med hjälp avslug_field
.När
query_pk_and_slug
ärTrue
kommerget_object()
att utföra sin sökning med hjälp av både primärnyckeln och sluggen.
- get_queryset()¶
Returnerar den queryset som kommer att användas för att hämta objektet som denna vy kommer att visa. Som standard returnerar
get_queryset()
värdet på attributetqueryset
om det är inställt, annars konstruerar det enQuerySet
genom att anropa metodenall()
på attributetmodel
standardhanterare.
- get_context_object_name(obj)¶
Returnerar det kontextvariabelnamn som kommer att användas för att innehålla de data som denna vy manipulerar. Om
context_object_name
inte anges kommer kontextnamnet att konstrueras frånmodel_name
för den modell som frågeuppsättningen är sammansatt av. Till exempel: skulle modellenArticle
ha ett kontextobjekt med namnet'article'
.
- get_context_data(**kwargs)¶
Returnerar kontextdata för visning av objektet.
Basimplementeringen av denna metod kräver att attributet
self.object
ställs in av vyn (även om det ärNone
). Var noga med att göra detta om du använder denna mixin utan en av de inbyggda vyerna som gör det.Den returnerar en ordbok med detta innehåll:
object
: Det objekt som denna vy visar (self.object
).context_object_name
:self.object
kommer också att lagras under det namn som returneras avget_context_object_name()
, vilket som standard är den gemena versionen av modellnamnet.
Kontextvariabler åsidosätter värden från mallens kontextprocessorer
Alla variabler från
get_context_data()
har företräde framför kontextvariabler från context processors. Om din vy till exempel anger attributetmodel
tillUser
, kommer standardkontextobjektnamnetuser
att åsidosätta variabelnuser
från kontextprocessorndjango.contrib.auth.context_processors.auth()
. Användget_context_object_name()
för att undvika en krock.
- get_slug_field()¶
Returnerar namnet på ett slug-fält som ska användas för att söka efter slug. Som standard returneras värdet för
slug_field
.
SingleObjectTemplateResponseMixin
¶
- class django.views.generic.detail.SingleObjectTemplateResponseMixin¶
En mixin-klass som utför mallbaserad svarsrendering för vyer som arbetar med en enda objektinstans. Kräver att vyn som den blandas med tillhandahåller
self.object
, den objektinstans som vyn arbetar med.self.object
kommer vanligtvis att vara, men behöver inte vara, en instans av en Django-modell. Det kan varaNone
om vyn håller på att konstruera en ny instans.Förlänger
Metoder och egenskaper
- template_name_field¶
Det fält i den aktuella objektinstansen som kan användas för att bestämma namnet på en kandidatmall. Om antingen
template_name_field
självt eller värdet påtemplate_name_field
på den aktuella objektinstansen ärNone
, kommer objektet inte att användas för ett kandidatmallnamn.
- template_name_suffix¶
Suffixet som ska läggas till det autogenererade kandidatmallnamnet. Standardsuffixet är
_detail
.
- get_template_names()¶
Returnerar en lista med kandidatmallnamn. Returnerar en lista som innehåller
template_name
, om värdet är inställt på det. Annars returneras en lista som innehåller:innehållet i fältet
template_name_field
i den objektinstans som vyn arbetar med (om tillgängligt)<app_label>/<modell_namn><template_namn_suffix>.html`