으악



뷰를 다 지우래...


지우기 전 뷰



바꾼거 (class 기반)




IndexView 같은 경우 Album.objects.all() 을 object_list 에 넣어버려서 ctx 처럼 해가지고 html 로 보내버린다.


이렇게...






그리고 Class DetailView 에서 보면 

model = Album 으로 설정 해 놨다.

그러면 detail.html 로 갈 때 그 특정 오브젝트 ex) pk=3 인 오브잭트라 치면

Album -> album 으로 만들어서 album 안에 넣어준다.

그러면 그것을 detail.html 에서 쓰면된다.


매우 이상한 장고임.. 












url 을 html 에서 쓸때 name 을 이용한다.. 예를 들어 {% url detail ~~ %} 

그런데 다른앱에서 detail 이라는 name 있다면? 

그것을 방지하기 위해서 urls.py 에 appname 을 써준다! 그리고

{%  url music : detail %}


<urls.py 안에서>




<html 안에서>





404 erorr


shortcut 에 보면 좋은 것이 있다.


< get_object_or_404 사용하기 전 >





< get_object_or_404 사용한 후>


render 와 같은 shortcut 에 있다.






'Etc' 카테고리의 다른 글

제네릭 뷰  (0) 2018.08.13
Django URL 하드코딩하지 않고 쓰기 <20>  (0) 2018.08.12
Django Foreign Key 활용 <18>  (0) 2018.08.12
Django Foreign Key 에 Data 저장하기  (0) 2018.08.12
Django Http404 사용하기 <16>  (0) 2018.08.12

템플릿에서 변경 전 상태 (하드코딩)



- 5 번째 줄에 보면 path url 에서 받은( <int: album.id> ) album.id 값으로 url 이동이 된다.



템플릿에서 변경 후 상태




- {% %} 안에 url 써주고 url name 을 써준다 그 다음 'detail' url 안에 필요한 <int: album_id> 값을 album.id 로 넣어준다.


'Etc' 카테고리의 다른 글

제네릭 뷰  (0) 2018.08.13
Django Namespace and HTTP 404 Shortcut <21>  (0) 2018.08.12
Django Foreign Key 활용 <18>  (0) 2018.08.12
Django Foreign Key 에 Data 저장하기  (0) 2018.08.12
Django Http404 사용하기 <16>  (0) 2018.08.12

<앨범 클레스 만들고 저장>




- NEW 라는 인스턴스 생성하고 각각의 컬럼값을 넣어준다. 그 후 save() 하면 Album DB 에 값이 들어감.



<Album 클래스와 연결된 Foreign Key 인 Song 클래스 추가하는 방법>


- track 인스턴스 만들고 각각의 컬럼값 넣어준 뒤 저장한다. 그리고 song_set.all() 로 값을 보면 저장되어있다.



<create 함수를 이용해서 save 생략하고 저장하는 방법>



- 이렇게 하면 save() 와 인스턴스 생성을 따로 하지 않아도 됨!



창고 count() 함수



shell 창



- 먼저 Album.objects.get(pk=1) 으로 첫번째 앨범 가져옴. 그리고 song 인스턴스 생성한뒤 song.album 에 가져온 첫번째 pk=1 앨범을 넣어주고 save 한다



- album1 = Album.objects.get(pk=1) 처럼 변수를 이용했는데 이렇게 해도 괜찮지만 직접 song.album = Album.objects.get(pk=1) 해줘도 똑같다.


- 안에 값은 바꾸고 save() 해주면 바뀜

'Etc' 카테고리의 다른 글

Django URL 하드코딩하지 않고 쓰기 <20>  (0) 2018.08.12
Django Foreign Key 활용 <18>  (0) 2018.08.12
Django Http404 사용하기 <16>  (0) 2018.08.12
Django template 활용법 <14>  (0) 2018.08.12
백준 4344 임시  (0) 2018.07.10

views.py

from django.http import Http404
from django.shortcuts import render
from django.http import HttpResponse
from .models import Album


def index(request):
all_albums = Album.objects.all()
ctx = {
'all_albums': all_albums
}
return render(request, 'music/index.html', ctx)


def detail(request, album_id):
try: # 에외 처리
album = Album.objects.get(id=album_id)
except Album.DoesNotExist:
raise Http404("Album does nor exist")
return render(request, 'music/detail.html', {'album': album}) # ctx 대신 이렇게 쓸 수 도 있다

- django 의 http 안에 Http404 를 import 해준다. 그러면 찾고자하는 요소가 없을때 404 페이지를 띄울 수 있다.


- album = Album.objects.get(id=album_id)  -> url 에서 album_id 를 get 해서 id (pk) 값으로 넘겨줌. 그런데 id (pk)가 없으면 http404 에러를 일으키고 아니면 detail 을 render 해서 보여준다. 


- tyr~except 예외처리


- return render 에서 ctx 대신 직접 사용할 변수를 넣어준것. 

'Etc' 카테고리의 다른 글

Django Foreign Key 활용 <18>  (0) 2018.08.12
Django Foreign Key 에 Data 저장하기  (0) 2018.08.12
Django template 활용법 <14>  (0) 2018.08.12
백준 4344 임시  (0) 2018.07.10
백준 파이썬 1546  (0) 2018.07.10
from django.shortcuts import render
from django.http import HttpResponse
from .models import Album


def index(request):
all_albums = Album.objects.all()
ctx = {
'all_albums': all_albums
}
return render(request, 'music/index.html', ctx)


def detail(request, album_id):
return HttpResponse("<h2>Details for album id:" + str(album_id) + "</h2>")

- index 에서  render 할 때 ctx 활용 잘보기



<index.html>

{% if all_albums %}
<ul>
{% for album in all_albums %}
<li><a href="/music/{{ album.id }}">{{ album.album_title }}</a></li>
{% endfor %}
</ul>
{% else %}
<h3>you don't have any albums</h3>
{% endif %}

- html 안에서 함수사용시에는 {% 함수 %} / 변수사용시에는 (ctx 안에 넣은 변수)  {{ 변수 }}

- cf) {% for %} ~ {% endfor %}  /   {% if %}  ~  {% endif %}

'Etc' 카테고리의 다른 글

Django Foreign Key 에 Data 저장하기  (0) 2018.08.12
Django Http404 사용하기 <16>  (0) 2018.08.12
백준 4344 임시  (0) 2018.07.10
백준 파이썬 1546  (0) 2018.07.10
백준 코드 임시 저장 15552번  (0) 2018.07.08
SubNum = int(input())
subNumber = []
subAv = []
for i in range(SubNum):
subNumber[i] = list(map(int, input().split()))
subAv[i] = subNumber[i]/subNumber[i][0]
print(subNumber[i])
print(subAv[i])


'Etc' 카테고리의 다른 글

Django Http404 사용하기 <16>  (0) 2018.08.12
Django template 활용법 <14>  (0) 2018.08.12
백준 파이썬 1546  (0) 2018.07.10
백준 코드 임시 저장 15552번  (0) 2018.07.08
코드펜  (0) 2018.06.22
Num = int(input())
subNumber = list(map(int, input().split()))
subNumber.sort()
H_score = subNumber[Num - 1]

for i in range(Num):
subNumber[i] = subNumber[i] / H_score * 100

sum = 0
for i in range(Num):
sum += subNumber[i]

aver = sum / Num
print('%.2f' % aver)


'Etc' 카테고리의 다른 글

Django Http404 사용하기 <16>  (0) 2018.08.12
Django template 활용법 <14>  (0) 2018.08.12
백준 4344 임시  (0) 2018.07.10
백준 코드 임시 저장 15552번  (0) 2018.07.08
코드펜  (0) 2018.06.22
import sys
T = int(input())
if T <= 1000000:
a = [] # a 저장공간 만들어야함


def Sum():
a, b = sys.stdin.readline().split() # 1. 값 1줄에 받아야함 2. 범위설정
A = int(a)
B = int(b)
if (1 <= A and B <= 100):
result = A + B
return result


i = 0
while i < T:
i = i + 1
a.append(Sum())

for i in range(T):
print(a[i])


'Etc' 카테고리의 다른 글

Django Http404 사용하기 <16>  (0) 2018.08.12
Django template 활용법 <14>  (0) 2018.08.12
백준 4344 임시  (0) 2018.07.10
백준 파이썬 1546  (0) 2018.07.10
코드펜  (0) 2018.06.22

+ Recent posts