Django View & URL (2)
์ฅ๊ณ ๋ 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-listView
๊ฐ View๋ 1. ์์ฒญ๋ ํ์ด์ง์ ๋ด์ฉ์ด ๋ด๊ธด HttpResponse ๊ฐ์ฒด๋ฅผ ๋ฐํํ๊ฑฐ๋, 2. ์์ธ์ฒ๋ฆฌ(Http404)๋ฅผ ํ๋๋ก ๋์ด์๋ค.
- ๋ฐ์ดํฐ ๋ฒ ์ด์ค ๋ ์ฝ๋ ์ฝ๊ธฐ 
- ํ ํ๋ฆฟ ์์คํ  ์ฌ์ฉ 
- PDF ์์ฑ 
- XML ์ถ๋ ฅ 
- ์ค์๊ฐ 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์ฝ๋๋ก ๋ถํฐ ๋์์ธ์ ๋ถ๋ฆฌํ ์ ์๋ค.
์ฐธ์กฐ
- ๊ณต์๋ฌธ์ : https://docs.djangoproject.com/ko/2.1/topics/http/urls/ 
Last updated
Was this helpful?