510 likes | 672 Views
2012 06 25 . 호떡의 장고 세미나. 세 번째 시간. 지난 시간에 뭐 했더라 ?. 템플릿 필터. {{ 어쩌구 | 필터 1| 필터 2 }}. 템플릿 태그. {% 여는태그 %} … {% 닫는태그 %}. Models. c lass Person( models.Model ). Admin. /admin/. 지난 시간에 뭐 했더라 ?. Reusing templates Users Form. Today’s Topic. int sum1 = 0 ; int sum2 = 0;
E N D
호떡의장고 세미나 세 번째 시간
템플릿 필터 {{ 어쩌구|필터1|필터2 }} 템플릿 태그 {% 여는태그%} … {% 닫는태그%} Models class Person(models.Model) Admin /admin/ 지난 시간에뭐했더라?
Reusing templates Users Form Today’sTopic
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;
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;
v Content !
base.html .. {% block content %} 기본으로 보일 내용.. {% endblock %} .. Outline Content .. {% extends “base.html” %} {% block content %} 덮어쓸 내용! {% endblock %} .. something.html
base.html .. <div class=‘title’> {% block title%} {% endblock %} </div> {% block content %} {% endblock %} .. Outline Title Content {% extends “base.html” %} {% block title %}제목제목제목{% endblock %} {% block content %} 내용내용내용내용 {% endblock %} something.html
base.html {% block title %} {% endblock %} {% block content %} {% endblock %} Outline Outline_Inner Title {% extends “base.html” %} {% block title %}제목 {% endblock %} {% block content %} ... {% block inner_content%} {% endblock %} {% endblock %} Content app/base.html {% extends “app/base.html” %} {% block inner_content%} ..{% endblock %} something.html
~/tutorial $ vi templates/calc.html <form method='POST' action='/calc/'> <input type="text" name="n1"> 더하기 <input type="text" name="n2"> <input type="submit" value="계산"> {% if result %} 결과는 {{ result }} {% endif %} </form>
~/tutorial $ vi calc/views.py from django.shortcuts import render defcalc(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 설정들은 알아서
~/tutorial $ vi templates/calc.html <form method='POST' action='/calc/'> <input type="text" name="n1"> 더하기 <input type="text" name="n2"> <input type="submit" value="계산"> {% csrf_token%} {% if result %} 결과는 {{ result }} {% endif %} </form>
~/tutorial $ vi calc/views.py from django.shortcuts import render defcalc(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})
~/tutorial $ vi templates/calc.html <form method='POST' action='/calc/'> <input type="text" name="n1"> 더하기 <input type="text" name="n2"> <input type="submit" value="계산"> {% csrf_token %} {% for error in errors %} {{ error }} <br /> {% empty %} {% if result %} 결과는 {{ result }} {% endif %} {% endfor %} </form>
더 알고싶은 사람을 위해… 개인적으로는 추천하지 않습니다 …쓰고싶으면 써보세요
~/tutorial $ python manage.py shell >>> from django.contrib.auth.models import User >>> user = User.objects.create_user('rodumani', 'changjej@gmail.com', 'bakwi') >>> user.save() >>> >>> user.is_staff = True >>> user.save() 유저 추가하기
~/tutorial $ python manage.py shell >>> from django.contrib.auth import authenticate >>> authenticate(username='rodumani', password='logue') >>> authenticate(username='rodumani', password='bakwi') <User: rodumani> ID/PW 확인하기
~/tutorial $ vi templates/login.html <form method="POST" action="/ahae/login/"> ID <input type="text" name="username"> PW <input type="password" name="password"> <input type="submit"> {% csrf_token %} </form> {{ error }}
~/tutorial $ vi ahae/views.py from django.shortcuts import redirect from django.contrib.auth import authenticate, login defahae_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')
~/tutorial $ vi ahae/urls.py urlpatterns = patterns('', url(r'^(\d+)/', 'ahae.views.print_ahae'), url(r'^login/$', 'ahae.views.ahae_login'), )
Rodumani, 1212를 입력하면… Rodumani, bakwi를 입력하면…
~/tutorial $ vi ahae/views.py from django.contrib.auth.decorators import login_required @login_required(login_url='/ahae/login/') def print_ahae(request, N): N = int(N) ... defahae_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/')})
~/tutorial $ vi templates/login.html <form method="POST" action="/ahae/login/"> ID <input type="text" name="username"> PW <input type="password" name="password"> <input type="submit"> <input type="hidden" name="next" value="{{ next }}"> {% csrf_token %} </form> {{ error }}
미니 프로젝트!? • 주제 자유 • 3~4인 1팀 구성 • Trac, SVN을 사용할 것 • 페이지 2개 이상, Model 2가지 이상 사용(Form이 하나 이상 들어가도록) • Admin 구현 • ~ 수요일 7시까지
/ 민정 지향 필립 / 종욱 중언 태현 / (박)준성 재의 지혁 / 창원 정민 기훈 143.248.234.124 팀장이름... SVN 팀 구성
다음 예고 : 수요일 7시 • 가급적 수요일 낮부터 만나서 마무리 작업을 할 것을 권장 • 수요일 7시에 모여서 발표, 평가 진행 • 가장 잘 한 팀에게는 상품이…
마지막예고 :금요일 9시 • 그 동안 못 다룬 토픽들 • Django Deployment Tips
http://djangobook.com http://djangoproject.com http://djangosnippets.org