Presentation is loading. Please wait.

Presentation is loading. Please wait.

2012 06 25. 호떡의 장고 세미나 세 번째 시간 지난 시간에 뭐 했더라 ? 템플릿 필터 {{ 어쩌구 | 필터 1| 필터 2 }} 템플릿 태그 {% 여는태그 %} … {% 닫는태그 %} Models class Person(models.Model) Admin /admin/

Similar presentations


Presentation on theme: "2012 06 25. 호떡의 장고 세미나 세 번째 시간 지난 시간에 뭐 했더라 ? 템플릿 필터 {{ 어쩌구 | 필터 1| 필터 2 }} 템플릿 태그 {% 여는태그 %} … {% 닫는태그 %} Models class Person(models.Model) Admin /admin/"— Presentation transcript:

1

2 호떡의 장고 세미나 세 번째 시간

3 지난 시간에 뭐 했더라 ?

4 템플릿 필터 {{ 어쩌구 | 필터 1| 필터 2 }} 템플릿 태그 {% 여는태그 %} … {% 닫는태그 %} Models class Person(models.Model) Admin /admin/

5 Reusing templates Users Form Today’s Topic

6 int sum1 = 0; int sum2 = 0; int average1 = 0; int average2 = 0; for (int i = 0; i < 4; i++) { sum1 += array1[i]; } average1 = sum1/4; for (int i = 0; i < 4; i++) { sum2 += array2[i]; } average2 = sum2/4;

7 int sum1 = 0; int sum2 = 0; int average1 = 0; int average2 = 0; for (int i = 0; i < 4; i++) { sum1 += array1[i]; } average1 = sum1/4; for (int i = 0; i < 4; i++) { sum2 += array2[i]; } average2 = sum2/4;

8 코드의 중복

9 묶어봅시다

10 v

11

12

13 v Content !

14 Outline Content.. {% block content %} 기본으로 보일 내용.. {% endblock %}.. base.html.. {% extends “base.html” %} {% block content %} 덮어쓸 내용 ! {% endblock %}.. something.html

15

16

17 Outline Content.. {% block title %} {% endblock %} {% block content %} {% endblock %}.. base.html {% extends “base.html” %} {% block title %} 제목제목 제목 {% endblock %} {% block content %} 내용내용내용내용 {% endblock %} something.html Title

18 Outline {% block title %} {% endblock %} {% block content %} {% endblock %} base.html Outline_Inner {% extends “base.html” %} {% block title %} 제목 {% endblock %} {% block content %}... {% block inner_content %} {% endblock %} something.html Title Content app/base.html {% extends “app/base.html” %} {% block inner_content %}.. {% endblock %}

19 Forms

20 덧셈 계산기

21 ~/tutorial $ python manage.py startapp calc

22 ~/tutorial $ vi templates/calc.html 더하기 {% if result %} 결과는 {{ result }} {% endif %}

23 ~/tutorial $ vi calc/views.py from django.shortcuts import render def calc(request): if request.method == 'GET': return render(request, 'calc.html') else: n1 = int(request.POST.get('n1', 0)) n2 = int(request.POST.get('n2', 0)) return render(request, 'calc.html', {'result': n1+n2}) 이제 INSTALLED_APPS, URL 설정들은 알아서

24

25 ~/tutorial $ vi templates/calc.html 더하기 {% csrf_token %} {% if result %} 결과는 {{ result }} {% endif %}

26

27

28 ~/tutorial $ vi calc/views.py from django.shortcuts import render def calc(request): if request.method == 'GET': return render(request, 'calc.html') else: errors = [] try: n1 = int(request.POST.get('n1', 0)) n2 = int(request.POST.get('n2', 0)) result = n1 + n2 except ValueError: errors.append('Not a number!') result = 0 return render(request, 'calc.html', {'result': result, 'errors': errors})

29 ~/tutorial $ vi templates/calc.html 더하기 {% csrf_token %} {% for error in errors %} {{ error }} {% empty %} {% if result %} 결과는 {{ result }} {% endif %} {% endfor %}

30 실습 1 : 이준영 파이널

31 더 알고싶은 사람을 위해 … 개인적으로는 추천하지 않습니다 … 쓰고싶으면 써보세요

32 Users

33 ?

34

35 ~/tutorial $ python manage.py shell >>> from django.contrib.auth.models import User >>> user = User.objects.create_user('rodumani', 'bakwi') >>> user.save() >>> >>> user.is_staff = True >>> user.save() 유저 추가하기

36 ~/tutorial $ python manage.py shell >>> from django.contrib.auth import authenticate >>> authenticate(username='rodumani', password='logue') >>> authenticate(username='rodumani', password='bakwi') ID/PW 확인하기

37 실습 2 : Ahae 회원제로 바꾸기

38 ~/tutorial $ vi templates/login.html ID PW {% csrf_token %} {{ error }}

39 ~/tutorial $ vi ahae/views.py from django.shortcuts import redirect from django.contrib.auth import authenticate, login def ahae_login(request): if request.method == 'POST': username = request.POST['username'] password = request.POST['password'] user = authenticate(username=username, password=password) if user is not None and user.is_active: login(request, user) return redirect('/ahae/13/') else: error = "Invalid login" return render(request, 'login.html', {'error': error}) return render(request, 'login.html')

40 ~/tutorial $ vi ahae/urls.py urlpatterns = patterns('', url(r'^(\d+)/', 'ahae.views.print_ahae'), url(r'^login/$', 'ahae.views.ahae_login'), )

41 Rodumani, 1212 를 입력하면 … Rodumani, bakwi 를 입력하면 …

42 ~/tutorial $ vi ahae/views.py from django.contrib.auth.decorators import def print_ahae(request, N): N = int(N)... def ahae_login(request):... if user is not None and user.is_active: login(request, user) return redirect(request.POST['next']) else:... return... return render(request, 'login.html', {'next': request.GET.get('next', '/ahae/13/')})

43 ~/tutorial $ vi templates/login.html ID PW {% csrf_token %} {{ error }}

44 오늘은 여기까지 !

45 미니 프로젝트

46 주제 자유 3~4 인 1 팀 구성 Trac, SVN 을 사용할 것 페이지 2 개 이상, Model 2 가지 이상 사용 (Form 이 하나 이상 들어가도록 ) Admin 구현 ~ 수요일 7 시까지 미니 프로젝트 !?

47 팀 구성 / 민정 지향 필립 / 종욱 중언 태현 / ( 박 ) 준성 재의 지혁 / 창원 정민 기훈 팀장 이름... SVN

48 다음 예고 : 수요일 7 시 가급적 수요일 낮부터 만나서 마무리 작업 을 할 것을 권장 수요일 7 시에 모여서 발표, 평가 진행 가장 잘 한 팀에게는 상품이 …

49 마지막 예고 : 금요일 9 시 그 동안 못 다룬 토픽들 Django Deployment Tips

50

51


Download ppt "2012 06 25. 호떡의 장고 세미나 세 번째 시간 지난 시간에 뭐 했더라 ? 템플릿 필터 {{ 어쩌구 | 필터 1| 필터 2 }} 템플릿 태그 {% 여는태그 %} … {% 닫는태그 %} Models class Person(models.Model) Admin /admin/"

Similar presentations


Ads by Google