- Django μ€μΉ
- Django κΈ°μ΄
λ§₯μμλ pythonμ μ€ννλ©΄ κΈ°λ³ΈμΌλ‘ μ€μΉλ 2.7 λ²μ μ μ€ννλ€. λ°λΌμ v3μΌλ‘ μ€μΉν΄μ£Όκ³ λ³κ²½ν΄μ€λ€.
# python3 μ€μΉ
brew install python3
echo "alias python=/usr/local/bin/python3" >> ~/.zshrc
echo "alias pip=/usr/local/bin/pip3" >> ~/.zshrc
source .zshrc
# Django μ€μΉ
python -m pip install Django
Django λ¬Έμμ μ€λ¬Έ μ± μ μ νν 리μΌλ‘ μ§ννλ€.
νλ‘μ νΈλ₯Ό μμ±νμ λ μ¬λ¬ νμΌλ€μ΄ μμ±μ΄ λλλ°, κ·Έ μ€μμ κ°μ₯ μ€μνκ² λ΄μΌνλ νμΌμ 3κ°μ΄λ€.
django-admin startproject mysite
κ°μ₯ κΈ°λ³Έμ μΌλ‘ ꡬμ±λ νλ‘μ νΈλ‘ μ€ννλ©΄ κΈ°λ³Έμ μΌλ‘ μ 곡νλ νλ©΄μ νμΈν μ μλ€.
python manage.py runserver
νν 리μΌμ μ§μλλ‘ μ€λ¬Έμ§ μ±μ λ§λ€κ³
python manage.py startapp polls
μ½λλ₯Ό μμ ν΄μ€ λ€ μ€νμ νλ©΄, μ μ μ mysite λλ ν 리μ urls.py
μ path('polls/', include('polls.urls'))
μ½λλ₯Ό ν΅ν΄ polls λλ ν 리μ urls.py
λ₯Ό ν΅ν΄ λΌμ°ν
μ΄ λλ κ²μ νμΈν μ μλ€.
admin.py
μ΄λλ―Όμ©μΌλ‘ μ¬μ©νλ νμΌμ΄λ€.
models.py
λ°μ΄ν°λ² μ΄μ€μ μ κ·ΌνκΈ° μν΄ μ¬μ©νλ νμΌμ΄λ€.
views.py
λΉμ¦λμ€ λ‘μ§μ΄ λ΄κ²¨μ§λ νμΌμ΄λ€.
κΈ°λ³Έ μ΄ν리μΌμ΄μ
λ€ μ€ λͺλͺμ μ΅μν νλ μ΄μμ λ°μ΄ν°λ² μ΄μ€ ν
μ΄λΈμ μ¬μ©νλ€. λ°λΌμ λ°μ΄ν°λ² μ΄μ€μμ ν
μ΄λΈμ 미리 λ§λ€μ΄μ£ΌκΈ° μν΄ migrate
λͺ
λ Ήμ μ€νν΄μ€λ€. (κΈ°λ³Έ λ°μ΄ν°λ² μ΄μ€ SQLite μ¬μ©)
python manage.py migrate
models.py
λ λ°μ΄ν°λ² μ΄μ€μ λͺ¨λΈλ§μ μ¬μ©λλ νμΌμ΄λ€. λ§μ°¬κ°μ§λ‘ νν λ¦¬μΌ λλ‘ models.py
μ Question ν΄λμ€μ Choice ν΄λμ€λ₯Ό μ μν΄μ£Όκ³ νμ¬ νλ‘μ νΈμκ² polls μ±μ΄ μ€μΉλμ΄ μλ€λ κ²μ μλ €μ£ΌκΈ° μν΄ settings.py
νμΌμμ INSTALLED_APPS
λ₯Ό μμ ν΄μ€λ€.
makemigrations
λͺ
λ Ήμ΄λ₯Ό μννλ©΄ models.py
μ μ μλ λ΄μ©μ λ°λΌ 0001_initials.py
νμΌμ΄ μμ±λλ κ²μ νμΈν μ μλ€.
python manage.py makemigrations polls
0001_initials.py
νμΌλ‘ migration
μ΄ λ΄λΆμ μΌλ‘ μ΄λ€ SQL λ¬Έμ₯μ μ€ννλμ§ μ΄ν΄λ³Ό μ μλ€.
python manage.py sqlmigrate polls 0001
λ§μ§λ§μΌλ‘ μμ μ΄μ΄ λ°μ΄ν°λ² μ΄μ€μ λ°μ΄ν°λ₯Ό λ£κ³ νμΈν΄λ³Έλ€.
python manage.py migrate
python manage.py shell
>>> from polls.models import Choice, Question
>>> from django.utils import timezone
>>> q = Question(question_text="What's new?", pub_date=timezone.now())
>>> q.save()
>>> Question.objects.all()
>>> q.question_text
>>> q.question_text = 'hey'
>>> q.save()
>>> q.question_text
>>> q.pub_date
>>> Question.objects.get(pk=1)
Djangoλ κΈ°λ³Έμ μΈ κ΄λ¦¬μ νμ΄μ§λ₯Ό μ 곡ν΄μ€λ€. http://127.0.0.1:8000/admin/
λ₯Ό ν΅ν΄ κ΄λ¦¬μ νμ΄μ§λ‘ μ΄λν μ μλ€.
python manage.py createsuperuser
Username: admin
Email address: admin@example.com
Password:
python manage.py runserver
νν 리μΌμ²λΌ admin.py
νμΌμ μμ νμ¬ κ΄λ¦¬μ μ¬μ΄νΈμμ poll μ±μ λ³κ²½κ°λ₯νλλ‘ μ€μ ν΄μ£Όλ©΄ DBμ μμ±ν ν
μ΄λΈμ μ‘°μν μ μκ² λλ€.
λ·°λ Django μ ν리μΌμ΄μ
μ΄ μΌλ°μ μΌλ‘ νΉμ κΈ°λ₯κ³Ό ν
νλ¦Ώμ μ 곡νλ μΉνμ΄μ§μ ν μ’
λ₯μ΄λ€. νν 리μΌλλ‘ μ§ννκ² λλ©΄ μΌλ° html λ¬Έμμλ λ€λ₯΄κ² {% %}
μ μ΄μ©νμ¬ μμ±λ κ²μ λ³Ό μ μλ€.
{% if latest_question_list %}
<ul>
{% for question in latest_question_list %}
<li><a href="/polls/{{ question.id }}/">{{ question.question_text }}</a></li>
{% endfor %}
</ul>
{% else %}
<p>No polls are available.</p>
{% endif %}
νν 리μΌμμλ Path Variableμ μ΄μ©νμ¬ μμΈ μ‘°νκ° κ°λ₯ν νμ΄μ§λ₯Ό ꡬμ±νκ³ μ‘°νκ° μλλ λ΄μ©μ λν΄ 404 νμ΄μ§λ₯Ό λμΈ μ μλλ‘ κ΅¬μ±νλ€. κ·Έ μΈμλ url νλ μ½λ© μ½λλ₯Ό μ κ±°ν΄μ£Όκ±°λ django.shortcuts
μμ μ 곡νλ ν¨μλ€μ μ΄μ©νμ¬ λ κ°νΈνκ² μ½λλ₯Ό μμ±νλ λ°©λ²μ λν΄ κΈ°μ λμ΄μλ€.
<!-- νλ μ½λ© -->
<li><a href="/polls/{{ question.id }}/">{{ question.question_text }}</a></li>
<!-- νλ μ½λ© μ κ±° -->
<li><a href="{% url 'detail' question.id %}">{{ question.question_text }}</a></li>
νν 리μΌλλ‘ μ§ννλ©΄ νΌμ μ λ ₯λ κ²°κ³Όλ₯Ό DBμ λ°μλλλ‘ κ΅¬μ±μ΄ λλ€.