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

요즘 html 로 다른 웹사이트를 클론하는게 html 실력향상에 도움이 무척 많이 된다는 생각이 든다.


html 을 워낙 못하기도 하고 억지로 암기하는 웹디자인은 너무 하기가 싫어서 html css 공부를 잘 안 했었는데


직접 홈페이지들을 따라 만들어보니까 성취감도 있고 너무 재미있다.


특히 codepen 이라는 사이트에는 작가들의 소스도 공개되어 있어서 연습해보기 좋은것 같다.


'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
백준 코드 임시 저장 15552번  (0) 2018.07.08

요즘 카카오톡 클론코딩을 하고있다.


엘리트코스로 코딩을 배운게 아니라 html css 가 정말 많이 부족한것같다. 


특히 서버공부를 할때 템플릿엔진을 하면서 볼때마다 너무 구려서 ㅠㅠ...


피로그래밍 9기 1차 결과가 얼마 안 남았는데 너무 긴장된다.

앞에서 while 문으로 별찍기를 할때 시간이 좀 걸렸다.

자바로 할 때는 별찍기 예제를 할때는 항상 for 문만 이용했기 때문이다.

파이썬을 공부하면서 좋은 경험을 했다.

오늘은 for 문이다.



[문제1] 1부터 100까지 출력

1부터 100까지의 숫자를 for문을 이용하여 출력하시오.


>>> for i in range(1, 101):

...     print(i)


위 코드는 내가 짠 코드



[문제2] 5의 배수의 총합

for문을 이용하여 1부터 1000까지의 자연수 중 5의 배수에 해당되는 자연수들의 총합을 구하시오.


>>> sum = 0

>>> for i in range(1, 1001):

...     if i%5 ==0:

...             sum += i

...

>>> print(sum)

100500



[문제3] 학급의 평균 점수

for문을 이용하여 A 학급의 평균 점수를 구해 보자.

A = [70, 60, 55, 75, 95, 90, 80, 80, 85, 100]


>>> Sum = 0

>>> for score in A:

...     Sum += score

...

>>> average = Sum/len(A)

>>> print(average)

79.0




[문제4] 혈액형

다음은 학생들의 혈액형(A, B, AB, O)에 대한 데이터이다.

['A', 'B', 'A', 'O', 'AB', 'AB', 'O', 'A', 'B', 'O', 'B', 'AB']

for 문을 이용하여 각 혈액형 별 학생수의 합계를 구하시오.


>>> A = [a for a in Data if a == 'A']

>>> B = [b for b in Data if b == 'B']

>>> AB = [ab for ab in Data if ab == 'AB']

>>> O = [o for o in Data if o == 'O']


[문제5] 리스트 내포1

리스트 중에서 홀수에만 2를 곱하여 저장하는 다음과 같은 코드가 있다.

numbers = [1, 2, 3, 4, 5]

result = []
for n in numbers:
    if n % 2 == 1:
        result.append(n*2)

위 코드를 리스트 내포(list comprehension)를 이용하여 표현하시오.




[문제6] 리스트 내포2

리스트 내포를 이용하여 다음 문장에서 모음('aeiou')을 제거하시오.

Life is too short, you need python




[문제1] 1부터 100까지 더하기

1부터 100까지의 자연수를 모두 더하고 그 결과를 출력하시오.


>>> Sum = 0

>>> i = 1

>>> while i <= 100:

...     Sum += i

...     i += 1

...

>>> print(Sum)

5050



[문제2] 3의 배수의 합

1부터 1000까지의 자연수 중 3의 배수의 합을 구하시오.



>>> result = 0

>>> i =1

>>> while i <= 1000:

...     if i%3 == 0:

...             result += i

...     i += 1

...

>>> print (result)




[문제3] 50점 이상의 총합

다음은 A학급 학생의 점수를 나타내는 리스트이다. 다음 리스트에서 50점 이상의 점수들의 총합을 구하시오.

A = [20, 55, 67, 82, 45, 33, 90, 87, 100, 25]



>>>

>>> i = 0

>>> sum = 0

>>> while i < 10:

...     if A[i] >= 50:

...             sum += A[i]

...     i += 1

...

>>> print(sum)

481



[문제4] 별 표시하기1

while문을 이용하여 아래와 같이 별(*)을 표시하는 프로그램을 작성해 보자.

*
**
***
****



>>> i = 1

>>> a = 1

>>> while i <= 5:

...     if a <= i:

...             print(i*'*')

...     i += 1

...

*

**

***

****

*****

>>>

위에 코드는 내가 푼것!


i = 0 while True: i += 1 # while문 수행 시 1씩 증가 if i > 5: break # i 값이 5보다 크면 while문을 벗어난다. print ('*' * i) # i 값 개수만큼 *를 출력한다.


위 코드는 해설

while 문은 true 를 이용하면 편하다.


>>> i = 0

>>> while True:

...     if i >= 5:break

...     print(i*' '+'*')

...     i += 1




[문제5] 별 표시하기2

while문을 이용하여 아래와 같이 별(*)을 표시하는 프로그램을 작성해 보자.

*******
 *****
  ***
   *




>>> i = 0

>>> while True:

...     if i >=5:break

...     b =-2*i+7

...     print(i*' '+b*'*')

...     i += 1

...

*******

 *****

  ***

   *


위 코드는 내가 만든 코드



star = 7 # 별의 갯수 space = 0 # 공백의 갯수 while star > 0: print(' ' * space + '*' * star) # 공백 + 별 출력 star -= 2 # 별의 갯수는 2씩 감소 space += 1 # 공백의 갯수는 1씩 증가


위 코드는 해설 코드


내가만든코드가 더 좋은거같다...ㅋㅋ 뿌듯

현재 nodejs 로 로그인 연습을 하고 있다. 그런데 비밀번호는 무조건 암호화를 해야한다는 사실을 알게 되었다.

(어찌보면 당연한 이야기 ㅋㅋㅋ....)

자세히는 모르지만 CRYPTO 라는 방식을 이용해서 간단하게 비밀번호를 암호화 하는 방법을 알아봤다.



먼저 CRYPTO 를 사용하기 전 CRYPTO 모듈설치를 해야한다. 

터미널에서 npm install --save crypto 를 해주고 paxkage.json 에 잘 설치 되었다 확인한 뒤 모듈을 사용하면 된다.


const crypto = require('crypto')


이렇게 적어 주면 사용할 준비가 완료.



암호화는 단방향 암호화와 양방향 암호화가 있다. 단방향 암호화에 대하여 알아 볼 건데 단방향 암호화는 복호화 할 수 없는 암호화 방법이다. 

즉, 암호화된 문자열을 다시 원래 문자열로 돌려놓을 수 없다는 뜻이다. 따라서 단방향 암호화는 한 번 암호화하면 복호화할 수 없다.



crypto를 이용해서 단방향 암호화를 할 것 이다.

먼저 크립토 모듈을 불러와서 createHash 메소드를 사용한다.

먼저 기본 틀은 이렇다.


crypto.createHash(1).update(2).digest(3)



createHash 의 1에는 어떠한 알고리즘으로 암호화를 할 것인지 정하는 것인데 ( sha256, sha512 등이 있음 ) 나는 sha512 를 사용하겠다.


crypto.createHash('sha512').update(2).digest(3)



그다음 update 옆에 2에는 어떤 것을 암호화 할 것인지를 정해주면 된다.  비밀번호를 하나하나 다 치진 않을 것이기 때문에 변수 pw 를 넣어줬다. 



crypto.createHash('sha512').update(pw).digest(3)



 마지막으로 암호화된 문자열을 표시할지를 정해준다. ( base64, hex, latin1 등의 방식이 있다.)  나는 hex 방식을 사용하겠다.



crypto.createHash('sha512').update(pw).digest('hex')


이렇게 해준 뒤



function createPW(pw) {

  return crypto.createHash('sha512').update(pw).digest('hex')

}



함수로 묶어주면 암호화 하고싶은 비밀번호가 생길때마다 함수를 호출해주기만 하면 끝이다.

1. js 에서 코드 다듬기



const uname = req.body.username;

const pwd = req.body.password;

 

이렇게 긴 코드를


const { username:uname, password:pwd } = req.body;


이렇게 한줄로 바꿀 수 있었다.







+ Recent posts