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ärobjectsstår förFoodefault manager <default-managers>`.
- queryset¶
En
QuerySetsom representerar objekten. Om det anges ersätter värdet förquerysetdet 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_slugtillTruehjä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
querysetanges 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ärTruekommerget_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å attributetquerysetom det är inställt, annars konstruerar det enQuerySetgenom att anropa metodenall()på attributetmodelstandardhanterare.
- 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_nameinte anges kommer kontextnamnet att konstrueras frånmodel_nameför den modell som frågeuppsättningen är sammansatt av. Till exempel: skulle modellenArticleha 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.objectstä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.objectkommer 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 attributetmodeltillUser, kommer standardkontextobjektnamnetuseratt åsidosätta variabelnuserfrå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.objectkommer vanligtvis att vara, men behöver inte vara, en instans av en Django-modell. Det kan varaNoneom 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_fieldsjälvt eller värdet påtemplate_name_fieldpå 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_fieldi den objektinstans som vyn arbetar med (om tillgängligt)<app_label>/<modell_namn><template_namn_suffix>.html