Django(4) : View설정 및 url설정
Database를 이용하는 법을 알았으니 View를 설정하고 template과 잇는 방법, 또한 url을 설정하는 방법에 대해 알아보도록 하겠습니다.
View를 설정하기 위해서는 views.py파일을 설정해주면 되는데 html파일을 사용하여 진행하는 방식으로 하겠습니다. html파일의 경우 app안에 templates폴더를 만든 후 그곳에 저장을 해줍니다. html파일을 만든 후 다시 views.py로 돌아와서 아래와 같은 코드를 추가해줍니다.
def main(request):
return render(request, ‘main.html’)
다음으로는 설정한 view를 불러올 수 있는 주소를 정해줍니다. 프로젝트의 urls.py로 가서 아래와 같이 코드를 변경해줍니다. (include를 import시키고 urlpatterns에 현재 앱에 대한 url을 넣어줍니다.)
from django.conf.urls import include, url
from django.contrib import adminurlpatterns = [
url(r’^main/’,include(‘App_name.urls’)),
url(r’^admin/’, admin.site.urls),
]
다음으로 앱의 폴더로 돌아가서 urls.py파일을 생성, 아래와 같이 코드를 추가합니다.
from django.conf.urls import url
from . import viewsurlpatterns = [
#/main/
url(r’^$’,views.main,name=’main’),
]
여러개의 view를 생성하여 쓸 때는 views.py파일에 추가를 해준 후 앱의 폴더에 있는 urls.py 에 추가를 해주면 됩니다. 이 때 조심해야될(?) 부분은 Django의 url은 정규표현식을 따르므로 정규표현식에 맞는 url을 적어주어야 합니다.
html 파일에서 데이터베이스나 다른 값들을 가져다 쓰고 싶으면 views.py파일에서 알맞는 view에 대해 설정을 해주면 됩니다. 우선 데이터베이스에 있는 테이블을 전달하도록 하겠습니다. 원래 있던 코드에서 아래와 같이 변경해줍니다. 데이터베이스를 가져올 것이므로 .models 에서 원하는 클래스(테이블)을 import시켜줍니다.
from django.shortcuts import render
from .models import Saying
# Create your views here.
def main(request):
cur_saying = Saying.objects.all()
context = {'cur_saying': cur_saying}
return render(request, 'main.html', context)
그 후 html파일에서 쓸 경우 아래와 같이 사용하면 됩니다.
<div>
{% if cur_saying %}
<ul>
{% for s in cur_saying%}
<li>{{s.saying_text}}</li>
{% endfor %}
</ul>
{% else %}
<p>no data</p>
{% endif %}
</div>