์ฅ๊ณ ๋ URLconf
(URL configuration)์ ์ฌ์ฉํ๋ค. URLconf
๋ URL ํจํด์ views์ ์ฐ๊ฒฐํ๋ค. ์ด์ ์ Django View ์ URL (1)์์ url์ ์ ๊น ๋ค๋ฃฌ์ ์ด ์๋ค. ์ด ์ฅ์์ ๋ ์์ธํ ์ดํด๋ณผ ๊ฒ์ด๋ค.
View์ URL
views.py
# app/views.py
from django.http import HttpResponse
def index(request):
return HttpResponse("<h1>Hello, world</h1>")
def detail(request, question_id):
return HttpResponse("You're looking at question %s" % question_id)
def results(request, question_id):
response = "You're looking at the results %s"
return HttpResponse(response % question_id)
def vote(request, question_id):
return HttpResponse("You're voting on question %s" % question_id)
urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
path('<int:question_id>/',views.detail, name='detail'),
path('<int:question_id>/results/',views.results, name='results'),
path('<int:question_id>/vote/',views.vote, name='vote'),
]
๋ค์๊ณผ ๊ฐ์ด view์ url์ ์ฐ๊ฒฐํ ์ ์๋ค.
http://localhost:8000/polls
, http://localhost:8000/polls/1
, http://localhost:8000/polls/1/results
, http://localhost:8000/polls/1/vote
์ ๊ฐ์ url๋ก view์ ์ ๊ทผํ ์ ์๋ค.
๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉ์๊ฐ ์น์ฌ์ดํธ์ ํ์ด์ง๋ฅผ ์์ฒญํ๋ฉด Django๋ mysite.urls
(project.urls) ํ์ด์ฌ ๋ชจ๋์ ๋ถ๋ฌ์จ๋ค. ๊ฑฐ๊ธฐ์ urlpatterns ๋ณ์๋ฅผ ์ฐพ์ ์์๋๋ก ํจํด์ ๋ฐ๋ผ๊ฐ๋ค. ๊ทธ url์ ๋ง๋ viewํจ์๋ฅผ ํธ์ถํ๊ฒ๋๋ค.
show_urls
ํ์ฌ ํ๋ก์ ํธ์ ์ค์ ๋์ด์๋ URL์ ํ๋ฒ์ ๋ณผ ์ ์๋ค. ์ฐ์ django-extensions
ํจํค์ง๋ฅผ ์ค์นํด์ค๋ค. [์ค์นํ๊ธฐ]
$ pip install django-extensions
$ pip list
Package Version
------------------- -------
Django 2.1.7
django-extensions 2.1.6
djangorestframework 3.9.2
pip 19.0.3
pytz 2018.9
setuptools 40.6.2
six 1.12.0
๊ทธ๋ฆฌ๊ณ ๋ํ settings.py
์ ์ค์ ํด์ค๋ค.
INSTALLED_APPS = (
'django_extensions',
)
$ ./manage.py
[django_extensions]
admin_generator
clean_pyc
clear_cache
compile_pyc
create_command
create_jobs
create_template_tags
delete_squashed_migrations
describe_form
drop_test_database
dumpscript
export_emails
find_template
generate_password
generate_secret_key
graph_models
mail_debug
merge_model_instances
notes
passwd
pipchecker
print_settings
print_user_for_session
reset_db
reset_schema
runjob
runjobs
runprofileserver
runscript
runserver_plus
set_default_site
set_fake_emails
set_fake_passwords
shell_plus
show_template_tags
show_templatetags
show_urls
sqlcreate
sqldiff
sqldsn
sync_s3
syncdata
unreferenced_files
update_permissions
validate_templates
์ฌ๊ธฐ์ url์ ํ์ธํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋ช
๋ น์ด๋ฅผ ์คํํ๋ฉด๋๋ค.
$ ./manage.py show_urls
/ rest_framework.routers.APIRootView api-root
/\.<format>/ rest_framework.routers.APIRootView api-root
/api-auth/login/ django.contrib.auth.views.LoginView rest_framework:login
/api-auth/logout/ django.contrib.auth.views.LogoutView rest_framework:logout
/groups/ quickstart.views.GroupViewSet group-list
/groups/<pk>/ quickstart.views.GroupViewSet group-detail
/groups/<pk>\.<format>/ quickstart.views.GroupViewSet group-detail
/groups\.<format>/ quickstart.views.GroupViewSet group-list
/users/ quickstart.views.UserViewSet user-list
/users/<pk>/ quickstart.views.UserViewSet user-detail
/users/<pk>\.<format>/ quickstart.views.UserViewSet user-detail
/users\.<format>/ quickstart.views.UserViewSet user-list
View
๊ฐ View๋ 1. ์์ฒญ๋ ํ์ด์ง์ ๋ด์ฉ์ด ๋ด๊ธด HttpResponse ๊ฐ์ฒด๋ฅผ ๋ฐํํ๊ฑฐ๋, 2. ์์ธ์ฒ๋ฆฌ(Http404)๋ฅผ ํ๋๋ก ๋์ด์๋ค.
๋ฐ์ดํฐ ๋ฒ ์ด์ค ๋ ์ฝ๋ ์ฝ๊ธฐ
ํ
ํ๋ฆฟ ์์คํ
์ฌ์ฉ
์ค์๊ฐ ZIP ํ์ผ ์์ฑ
view๋ ๋ค์๊ณผ ๊ฐ์ ์ผ์ ํ ์ ์์ผ๋ฉฐ, python์ ์ด๋ ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ฌ์ฉํ ์ ์๋ค.
Database API ์ฌ์ฉํ๊ธฐ
from django.http import HttpResponse
# ๋ชจ๋ธ import
from .models import Question
def index(request):
last_question_list = Question.objects.order_by('-pub_date')[:5]
output = ', '.join([q.question_text for q in last_question_list])
return HttpResponse(output)
Database API์ ์ ๊ทผํ๊ณ ์์ง๋ง ์ฌ๊ธฐ์๋ ๋ฌธ์ ๊ฐ ์๋ค. View์์ ํ์ด์ง์ ๋์์ธ์ ํ๋์ฝ๋ฉ ํ๊ณ ์๋ ์ ์ด๋ค. ํ
ํ๋ฆฟ(template)์ ์ด์ฉํด์ python์ฝ๋๋ก ๋ถํฐ ๋์์ธ์ ๋ถ๋ฆฌํ ์ ์๋ค.
์ฐธ์กฐ