WebHU - Programozási kérdések és válaszok

Mi a különbség a felhasználói objektumok létrehozásának különböző módszerei között a django-ban?

Kerestem, de nem találtam erre megfelelő választ. Jelenleg a django-ban háromféle módon hozhatunk létre felhasználót egyéni kezelővel:

1) Objektumpéldány létrehozásával és a save() meghívásával-

u = User(name="some_name", password="some_password")
u.save()

2) A create() szám felhívásával a menedzsernél-

u = User.objects.create(name="some_name", password="some_password")

3) A menedzser create_user() számának felhívásával-

u = User.objects.create_user(name="some_name", password="some_password")

Az olyan információk, mint például, hogy mindegyikük hogyan működik belsőleg, és miben hasonlítanak és különböznek, nagyon hasznosak lesznek.

19.09.2015


Válaszok:


1

Az 1) és 2) módszer általános módszerek egy modellpéldány létrehozására. Semmi konkrétat nem tesznek a User modellel kapcsolatban.

Ez azt jelenti, hogy a jelszóként beállított érték nem kivonatolva lesz, hanem úgy menti, ahogy van. A Django nem ismeri fel a jelszót megfelelően sózott és kivonatolt jelszóként, és Ön nem fog tudni bejelentkezni.

A jelszó megfelelő beállításához használja a User.set_password():

u = User(name="some_name")
u.set_password("some_password")
u.save()

Vegye figyelembe, hogy ugyanezt a 2) módszerrel nem teheti meg további adatbázis-lekérdezés nélkül.

A 3. módszer) egy kényelmi funkció, amely kezeli a User modell összes jellemzőjét, például a jelszó kivonatolását.

19.09.2015

2

1) és 2) azonosak abban a tekintetben, amit csinálnak. A különbség az, hogy az 1-es metódussal kifejezetten kiválaszthatja, hogy mikor kívánja véglegesíteni az objektumot az adatbázisban a save paraméterrel.

A 3-mal kapcsolatban ez a dokumentumokból van:

create_user(felhasználónév, email=nincs, jelszó=nincs, **extra_fields)

Felhasználót hoz létre, elment és visszaküld.

A felhasználónév és jelszó a megadottak szerint van beállítva. Az e-mail tartomány része automatikusan kisbetűssé alakul, és a visszaadott User objektum is_active értéke True lesz.

Ha nincs megadva jelszó, a set_unusable_password() meghívásra kerül.

Az extra_fields kulcsszó-argumentumok átkerülnek a felhasználó init metódusába, lehetővé téve tetszőleges mezők beállítását egy egyéni felhasználói modellen.

Tehát a create_user úgy néz ki, mint egy kisbetűs szűrőt alkalmaz az e-mailre, és használhatatlan jelszót állít be (megakadályozza, hogy a felhasználó bejelentkezhessen).

19.09.2015
  • A használhatatlan jelszó és a véletlenszerű jelszó nem ugyanaz. A használhatatlan jelszót a rendszer speciális tokenként menti, amely semmilyen bejelentkezést nem engedélyez. 19.09.2015
  • Új anyagok

    A rádiógomb ellenőrzött eseményének használata a jQueryben
    Ebben a cikkben látni fogjuk, hogyan kell dolgozni a jquery választógombbal ellenőrzött eseményeivel. A választógombok HTML gombok, amelyek segítenek kiválasztani egyetlen értéket egy csoportból...

    Körkörös függőségek megoldása terraformban adatforrásokkal – lépésről lépésre
    Mi az a körkörös függőségek Dolgozzunk egy egyszerű eseten, amikor az SQS-sor és az S3-vödör közötti körkörös függőség problémája van egy egymástól függő címkeérték miatt. provider..

    Miért érdemes elkezdeni a kódolást 2023-ban?
    01100011 01101111 01100100 01100101 — beep boop beep boop Világunk folyamatosan fejlődik a technológia körül, és naponta fejlesztenek új technológiákat a valós problémák megoldására. Amint..

    🎙 Random Noise #2  – Örökbefogadás és hit
    az analitika íratlan világának gondozása Szeretné, hogy ezek a frissítések a postaládájába kerüljenek? Iratkozzon fel itt . "Ha önvezető autókat gyártanak, akkor mi miért ne..

    A legrosszabb politika és prediktív modellek májátültetésre jelöltek számára az Egyesült Államokban
    A máj (vagy óangolul lifer) az emberi test legnehezebb belső szervére utal, amely csendesen működik a nap 24 órájában. Mit csinál a máj? 500 feladatot hajt végre a szervezet egészségének..

    5 webhely, amely 2022-ben fejleszti front-end fejlesztői készségeit
    Frontendmentor.io A tényleges projektek létrehozásával a Frontendmentor.io segítséget nyújt a front-end kódolási képességeinek fejlesztésében. A kódolást azután kezdheti meg, hogy..

    Mikor kell használni a Type-t az interfészhez képest a TypeScriptben?
    A TypeScript a JavaScript gépelt szuperkészlete, amely statikus gépelést ad a nyelvhez. Ez megkönnyíti a robusztus és karbantartható kód írását azáltal, hogy a hibákat a fordítási időben..