< django - 16 >
16. django.contrib.auth μ± + λ‘κ·ΈμΈκ³Ό λ‘κ·Έμμ + common μ± + λ‘κ·ΈμΈ λ·° + λ‘κ·ΈμΈ ν νλ¦Ώ
# django.contrib.auth μ±
: μ₯κ³ μ λ‘κ·ΈμΈ, μμμ λμμ£Όλ μ±μΌλ‘, μ₯κ³ νλ‘μ νΈκ° μμ±λ λ μλμΌλ‘ μΆκ°λ¨
# common μ±
: κ³΅ν΅ κΈ°λ₯μ κ°μ§ μ±μΌλ‘, λ‘κ·ΈμΈκ³Ό λ‘κ·Έμμμ ꡬννλ λ° μ¬μ©
1. λͺ λ Ή ν둬ν¬νΈμ common μ±μ μλ‘ μμ±νλ€.
+ common μ± μμ± μ pybo μ±κ³Ό κ°μ ꡬ쑰μ λλ ν°λ¦¬, νμΌλ€μ΄ μλμΌλ‘ λ§λ€μ΄μ§.
2. projects\mysite\config\settings.py νμΌμ μλ‘ μμ±ν common μ±μ λ±λ‘νλ€.
3. common μ±μ urls.py νμΌμ μ¬μ©νκΈ° μν΄ config/urls.py νμΌμ λ€μκ³Ό κ°μ΄ μμ νλ€.
+ μ΄μ http://localhost:8000/common/ μΌλ‘ μμνλ URLμ λͺ¨λ common/urls.py νμΌμ μ°Έμ‘°νκ² λ¨
4. common/urls.py νμΌμ μλμ²λΌ μλ‘ μμ±νλ€.
# λ‘κ·ΈμΈκ³Ό λ‘κ·ΈμΈ λ·°, λ‘κ·ΈμΈ ν νλ¦Ώ
1. λ‘κ·ΈμΈ νλ©΄μΌλ‘μ μ§μ μ μν΄ projects\mysite\templates\navbar.html νμΌμ λ‘κ·Έλ§ λ§ν¬λ₯Ό μλμ²λΌ μμ νλ€.
2. projects\mysite\common\urls.py νμΌμ μλμ κ°μ λ§€ν κ·μΉ μΆκ° <-- navbar.html νμΌμμ ν νλ¦Ώ νκ·Έλ‘ {% url 'common:login' %}λ₯Ό μ¬μ©νκΈ° λλ¬Έ
+ λ‘κ·ΈμΈ λ·°λ λ°λ‘ λ§λ€μ§ μκ³ μμ μ½λμ²λΌ django.contrib.auth μ±μ LoginViewλ₯Ό μ¬μ©νλλ‘ μ€μ
3. http:/localhost:8000/pybo/ λ₯Ό λΆλ¬μ¨ λ€ λ€λΉκ²μ΄μ λ°μ λ‘κ·ΈμΈ λ§ν¬ ν΄λ¦ --> μλμ κ°μ μ€λ₯ νμ΄μ§ μΆλ ₯
+ LoginViewλ registrationμ΄λΌλ ν νλ¦Ώ λλ ν°λ¦¬μμ login.html νμΌμ μ°Ύλλ°, μ μ€λ₯λ registration λλ ν°λ¦¬μ login.html νμΌμ΄ μμ λ λνλ¨ --> registration/login.html ν νλ¦Ώ νμΌμ μμ±ν¨μΌλ‘μ¨ λ¬Έμ ν΄κ²° κ°λ₯
4. LoginViewκ° common λλ ν°λ¦¬μ ν νλ¦Ώμ μ°Έμ‘°ν μ μλλ‘ common/urls.py νμΌμ μλμ κ°μ΄ μμ
+ registration λλ ν°λ¦¬κ° μλ common λλ ν°λ¦¬μμ login.html νμΌμ μ°Έμ‘°νκ² μ€μ ν¨ <-- λ‘κ·ΈμΈμ common μ±μ ꡬνν κ²μ΄λ―λ‘ μμ μ€λ₯ λ©μμ§μμ νμν κ²μ²λΌ registration λλ ν°λ¦¬μ ν νλ¦Ώ νμΌμ μμ±ν기보λ€λ common λλ ν°λ¦¬μ ν νλ¦Ώμ μμ±νλ κ²μ΄ λ λμ
5. λ€μ http:/localhost:8000/pybo/ νμ΄μ§λ₯Ό λΆλ¬μ€κ³ λ‘κ·ΈμΈ λ§ν¬ ν΄λ¦ --> λ€λ₯Έ μ€λ₯ λ©μΈμ§ & μ°½ μΆλ ₯
6. 5λ²μ μ€λ₯ ν΄κ²°μ μν΄ common/login.html νμΌμ μμ±νκΈ° μν common ν νλ¦Ώ λλ ν°λ¦¬λ₯Ό λ€μκ³Ό κ°μ΄ μμ±
7. common ν νλ¦Ώ λλ ν°λ¦¬μ login.html ν νλ¦Ώμ λ€μκ³Ό κ°μ΄ μλ‘ μμ±
+ μ¬μ©μμ λΉλ°λ²νΈμ μμ΄λλ₯Ό μ λ ₯λ°μ λ‘κ·ΈμΈμ΄ κ°λ₯νκ² νλ ν νλ¦Ώ
+ django.contrib.auth μ±μ΄ μꡬνλ νλ νμνλͺ©
--> λ‘κ·ΈμΈμ μ°μ΄λ μ¬μ©μ μμ΄λ(μ¬μ©μλͺ )λ₯Ό μλ―Ένλ νλͺ© username, λΉλ°λ²νΈλ₯Ό μλ―Ένλ password νλͺ©
8. {% csrf_token %} λ°λ‘ λ°μ include νκ·Έλ‘ ν¬ν¨λ form_errors.html ν νλ¦Ώ νμΌμ μλμ κ°μ΄ μλ‘ μμ±νλ€.
+ μ ν νλ¦Ώμ λ‘κ·ΈμΈ μ€ν¨ μ λ‘κ·ΈμΈ μ€ν¨ μ΄μ λ₯Ό μλ €μ£Όλ μν μ νλ©°, νλ μ€λ₯μ λνλ μ€λ₯λ₯Ό λͺ¨λ νμνκΈ° μν΄ μ½μ λ¨
+ νΌ μ€λ₯μ μ’ λ₯
νλ μ€λ₯ (field.errors) | λνλ μ€λ₯ (form.non_field_errors) |
μ¬μ©μκ° μ λ ₯ν νλ κ°μ λν μ€λ₯λ‘ κ°μ΄ λλ½λμκ±°λ νλμ νμμ΄ μΌμΉνμ§ μλ κ²½μ°μ λ°μνλ μ€λ₯ | νλμ κ°κ³Όλ μκ΄μμ΄ λ€λ₯Έ μ΄μ λ‘ λ°μνλ μ€λ₯ |
# λ‘κ·ΈμΈ μν
1. http:/localhost:8000/pybo/ νμ΄μ§λ₯Ό νΈμΆ ν λ€λΉκ²μ΄μ λ°μ λ‘κ·ΈμΈ λ§ν¬ ν΄λ¦ --> μ무 λ΄μ©λ μ λ ₯νμ§ μκ³ λ‘κ·ΈμΈ λ²νΌ ν΄λ¦ν΄λ³΄κΈ°
2. νμ¬ μ μΌνκ² λ‘κ·ΈμΈν μ μλ μνΌμ μ alimμ μ¬μ©μ μμ΄λμ, kprpm359μ λΉλ°λ²νΈμ μ λ ₯νμ¬ λ‘κ·ΈμΈ μνν΄λ³΄κΈ°
+ λ‘κ·ΈμΈμ΄ μ±κ³΅νλ©΄ django.contrib.auth ν¨ν€μ§λ λν΄νΈλ‘ /accounts/profile/ μ΄λΌλ URLλ‘ μ΄λμν€κΈ° λλ¬Έμ μ€λ₯ λ°μ
3. 2λ²μ μ€λ₯ ν΄κ²°μ μν΄ λ‘κ·ΈμΈ μ±κ³΅ μ / νμ΄μ§λ‘ μ΄λν μ μλλ‘ config/settings.py νμΌμ λ§μ§λ§ μ€μ LOGIN_REDIRECT_URL μΆκ°
+ / νμ΄μ§ --> κΈ°λ³Έ URLμΈ http://localhost:8000/ νμ΄μ§
4. λ€μ http://localhost:8000/ νμ΄μ§ μμ² ν λ‘κ·ΈμΈ μν --> /λ₯Ό μλ―Ένλ http://localhost:8000/ νμ΄μ§μ λν URL λ§€ν κ·μΉμ μμ±νμ§ μμκΈ°μ μλ¬ λ°μ
5. 4λ²μ μ€λ₯λ₯Ό μμ νκΈ° μν΄ C:\projects\mysite\config\urls.py νμΌμ / νμ΄μ§μ λμνλ URL λ§€ν κ·μΉ μΆκ°
+ / νμ΄μ§ μμ² μ path('', views.index, name='index')κ° μλνμ¬ pybo/views.py νμΌμ index ν¨μκ° μ€νλκ² μ€μ ν¨
# λ‘κ·Έμμ
1. http://localhost:8000/ νμ΄μ§ μμ² --> λ‘κ·ΈμΈμ΄ μ±κ³΅μ μΌλ‘ μλ£λμμμλ λ‘κ·Έμμμ΄ μλ λ‘κ·ΈμΈ λ²νΌμ΄ 보μ
2. projects\mysite\templates\navbar.html νμΌμμ λ‘κ·ΈμΈ λ§ν¬ λΆλΆμ μλμ κ°μ΄ μμ
+ << Line 16 >>
: {% if user.is_authenticated %} --> νμ¬ μ¬μ©μκ° λ‘κ·ΈμΈ λμλμ§ μ¬λΆλ₯Ό νλ³νμ¬ λ‘κ·ΈμΈμ΄ λμ΄μλ€λ©΄ λ‘κ·Έμμ λ§ν¬λ₯Ό, λ°λμ κ²½μ°μλ λ‘κ·ΈμΈ λ§ν¬λ₯Ό νμ
+ << Line 17 >>
: λ‘κ·ΈμΈμ΄ λμ΄μλ κ²½μ° λ‘κ·Έμμ λ§ν¬μ μ¬μ©μλͺ λ μΆκ°λ‘ νμνλλ‘ μ€μ
+ ν νλ¦Ώμμμ User μ¬μ©
: λ·°ν¨μμμ ν νλ¦Ώμ User κ°μ²΄λ₯Ό μ λ¬νμ§ μλλΌλ ν νλ¦Ώμμλ django.contrib.auth κΈ°λ₯μΌλ‘ μΈν΄ User κ°μ²΄λ₯Ό μ¬μ©ν μ μμ
user.is_authenticated | νμ¬ μ¬μ©μκ° μΈμ¦λμλμ§μ λν μ¬λΆ (λ‘κ·ΈμΈ μνμμλ true, λ‘κ·Έμμ μνμμλ false) |
user.is_anonymous | is_authenticatedμ λ°λλλ κ²½μ° (λ‘κ·ΈμΈλ κ²½μ°μλ false, λ‘κ·Έμμ μνμ κ²½μ° true) |
user.username | μ¬μ©μλͺ = μ¬μ©μ ID |
user.is_superuser | μ¬μ©μκ° μνΌμ μ μΈμ§μ λν μ¬λΆ |
3. λ‘κ·Έμμ λ§ν¬κ° μΆκ°λμμΌλ―λ‘ {% url 'common:logout' %}μ λμνλ URL λ§€νμ projects\mysite\common\urls.py νμΌμ μΆκ°
4. λ‘κ·Έμμ μ 리λ€μ΄λ νΈν μμΉλ projects\mysite\config\settings.py νμΌμ μΆκ°
+ λ‘κ·Έμμ μ / νμ΄μ§λ‘ μ΄λνκΈ° μν΄ LOGOUT_REDIRECT_URLμ μ€μ
5. λ€μ http://localhost:8000/ νμ΄μ§λ₯Ό νΈμΆ --> μνΌ μ μ λ‘ λ‘κ·ΈμΈ & λ‘κ·Έμμ μλ