request.POST.get(‘sth’) vs request.POST[‘sth’] – verschil?

Wat is het verschil tussen

request.POST.get('sth')

en

request.POST['sth']

Ik heb de vergelijkbare vraag niet gevonden, beide werken hetzelfde voor mij, stel dat ik ze afzonderlijk kan gebruiken, maar misschien heb ik het mis, daarom vraag ik het. Enig idee?


Antwoord 1, autoriteit 100%

request.POST['sth']genereert een KeyError-uitzondering als 'sth'niet in request.POST.

request.POST.get('sth')retourneert Noneals 'sth'niet in request.POST.

Bovendien kunt u met .geteen extra parameter opgeven van een standaardwaarde die wordt geretourneerd als de sleutel niet in het woordenboek staat. Bijvoorbeeld request.POST.get('sth', 'mydefaultvalue')

Dit is het gedrag van elk python-woordenboek en is niet specifiek voor request.POST.


Deze twee fragmenten zijn functioneel identiek:

Eerste fragment:

try:
    x = request.POST['sth']
except KeyError:
    x = None

Tweede fragment:

x = request.POST.get('sth')


Deze twee fragmenten zijn functioneel identiek:

Eerste fragment:

try:
    x = request.POST['sth']
except KeyError:
    x = -1

Tweede fragment:

x = request.POST.get('sth', -1)


Deze twee fragmenten zijn functioneel identiek:

Eerste fragment:

if 'sth' in request.POST:
    x = request.POST['sth']
else:
    x = -1

Tweede fragment:

x = request.POST.get('sth', -1)

Antwoord 2

Request.POST-voorbeeld

req.POST['name_your_desired_field'] 

Hierdoor wordt een KeyError-uitzondering gegenereerd als ‘name_your_desired_field’ niet in req.POST staat.

request.POST.get('name_your_desired_field') 

Dit levert Geen op als ‘name_your_desired_field’ niet in req.POST staat.

Hoewel je met .get een extra parameter van een standaardwaarde kunt opgeven die wordt geretourneerd als de sleutel niet in het woordenboek staat. Bijvoorbeeld,

req.POST.get('name_your_desired_field', 'your_default_value')

Dit is het gedrag van elk python-woordenboek en is niet specifiek voor req.POST

Request.GET-voorbeeld

request.GET.get('name_your_desired_field') 

Dit levert Geen op als ‘name_your_desired_field’ niet in req.GET staat.

Hoewel u met .get een extra parameter van een standaardwaarde kunt opgeven, die wordt geretourneerd als de sleutel niet in het woordenboek staat. Bijvoorbeeld,

req.GET.get('name_your_desired_field', 'your_default_value')

Dit is het gedrag van elk python-woordenboek en is niet specifiek voor req.GET


Antwoord 3

Het belangrijkste verschil tussen toegang tot normale woordenboeken en toegang met .get() is dat

Met
iets gebruiken als
request.POST['sth']zal optreden, een sleutelfout is als de ket ‘sth’ niet bestaat.
Maar het gebruik van get() methode-woordenboeken zal u ook een betere foutafhandeling bieden

request.POST.get('sth')

zal niets teruggeven is de sleutel ‘sth bestaat niet’
en ook door de tweede parameter op te geven aan get() zal het als standaardwaarde terugkeren.

data = request.POST.get('sth','my_default_value')

Als de ‘sth’-sleutel niet bestaat, is de waarde in de gegevens my_default_value.
Dat is het voordeel van het gebruik van de get()-methode boven de normale toegang tot woordenboeken.

Other episodes