More actions
No edit summary |
(Repair batch-0006 pages from live compare) |
||
| (2 intermediate revisions by 2 users not shown) | |||
| Line 1: | Line 1: | ||
__TOC__ | __TOC__ | ||
=== 소개 === | === 소개 === | ||
'''1학기''' | |||
* 애플파이만큼 달콤한 파이썬 입문 스터디 | * 애플파이만큼 달콤한 파이썬 입문 스터디 | ||
* 참고 자료를 이용해 다같이 Python 3.6을 배워봅시다. | * 참고 자료를 이용해 다같이 Python 3.6을 배워봅시다. | ||
* 주 사용 자료는 위키독스 | * 주 사용 자료는 점프 투 파이썬 (위키독스 문서) 입니다. | ||
* 화요일 오후 6시에 진행. | |||
* 화요일 오후 6시에 진행 | |||
* | '''2학기''' | ||
* Django로 시작하는 웹 개발 입문 스터디 | |||
* 파이썬의 문법을 배웠으니 뭔가 만들어봅시다. | |||
* 온라인 상의 튜토리얼 문서들을 참조합니다. | |||
=== 참가자 === | === 참가자 === | ||
| Line 26: | Line 30: | ||
* map 함수에 대해 알아봄. | * map 함수에 대해 알아봄. | ||
* 백준에서 예제 문제 3개 풀이. | * 백준에서 예제 문제 3개 풀이. | ||
===== 20180522 ===== | |||
* 점프 투 파이썬 기준 04-3까지 마침. | |||
* 연관 배열, 해시 테이블 개념 이해. | |||
* dict와 set에 대해 알아봄. | |||
* bool에 대해 알아봄. | |||
* 다양한 종류의 연산자들을 알아봄. | |||
* List Comprehension에 대해 알아봄. | |||
* 함수에 대해 좀 더 깊은 학습. | |||
* print, input에 대해 자세히 알아봄. | |||
* 파일 입출력하는 법을 알아봄. | |||
===== 20180529 ===== | |||
* 그동안 배운 것들 총 복습. | |||
* 파이썬으로 백준의 다양한 문제를 품. | |||
* 클래스에 대해 각자 집에서 자습. | |||
===== 20180928 ===== | |||
* 인터넷과 서버에 대한 기초 개념 | |||
* 장고란 무엇인가, 프레임워크에 대한 이해 | |||
* 장고 설치 후 프로젝트 생성, It works 페이지 띄우기 | |||
* 장고 개발을 위해 필요한 콘솔 커맨드 위주로 공부 | |||
* 프로젝트 생성 : | |||
django-admin.py startproject projectname . | |||
* settings.py 수정 | |||
STATIC_URL = '/static/' | |||
STATIC_ROOT = os.path.join(BASE_DIR, 'static') | |||
ALLOWED_HOSTS = ['*'] | |||
* DB 업데이트 (마이그레이션 전체 적용) : | |||
python manage.py migrate | |||
* 슈퍼유저 계정 생성 : | |||
python manage.py createsuperuser | |||
* 서버 실행 : | |||
python manage.py runserver 0.0.0.0:80 | |||
* 명령어 도움말 : | |||
python manage.py 명령어 --help | |||
===== 20181005 ===== | |||
* 장고의 MTV (Model-Template-View) 패턴 배우기 | |||
* 장고 Model을 만들고, 마이그레이션 적용하기 | |||
* 장고 View를 만들고, path() 메서드를 통해 URL 매칭 | |||
* render() 메서드를 통해 HTML(템플릿) 띄우기 | |||
* 쿼리셋을 활용해 객체 형태로 데이터베이스 다루기 | |||
* 템플릿 태그를 활용해 HTML에 동적 데이터 출력 | |||
* Model : 데이터 표현 / Template : 보여지는 형태 / View : HTTP 요청 받고 응답 반환 (모델과 템플릿을 연결) | |||
* MVC 패턴과는 조금 다르다. (장고에서는 장고 프레임워크 자체를 컨트롤러라고 부른다.) | |||
* 애플리케이션 생성 : | |||
python manage.py startapp appname | |||
* settings.py에 애플리케이션 추가 : | |||
INSTALLED_APPS = [(기존항목..), 'appname'] | |||
* appname/models.py 코드 작성 (필드 속성은 [https://docs.djangoproject.com/en/2.1/ref/models/fields/ 여기] 참고) | |||
from django.utils import timezone | |||
class modelname(models.Model): | |||
author = models.ForeignKey('auth.User', on_delete=models.CASCADE) | |||
title = models.CharField(max_length=200) | |||
text = models.TextField() | |||
created_date = models.DateTimeField(default=timezone.now) | |||
published_date = models.DateTimeField(blank=True, null=True) | |||
def publish(self): | |||
self.published_date = timezone.now() | |||
self.save() | |||
def __str__(self): | |||
return self.title | |||
* 마이그레이션 파일 생성 : | |||
python manage.py makemigrations appname | |||
* 마이그레이션을 실제 DB에 적용 : | |||
python manage.py migrate appname | |||
* appname/admin.py에 모델 추가 : | |||
admin.site.register(modelname) | |||
* urls.py에 패턴 추가 : | |||
path('myapp/', include('appname.urls')) | |||
* appname/urls.py에 패턴 추가 : | |||
path('', views.viewname, name='pathname') | |||
* appname/views.py 코드 작성 | |||
from django.utils import timezone | |||
from .models import modelname | |||
def viewname(request): | |||
objs = modelname.objects.all() | |||
return render(request, 'templatename.html', {'keyname': objs}) | |||
* appname/templates/templatename.html 소스 작성 | |||
<body> | |||
{% for i in keyname %} | |||
<div> | |||
<h1><a href="">{{ i.title }}</a></h1> | |||
<p>published: {{ i.published_date }}</p> | |||
<p>{{ i.text|linebreaksbr }}</p> | |||
</div> | |||
{% endfor %} | |||
</body> | |||
</html> | |||
* | |||
http://127.0.0.1:포트/admin/ | |||
에서 모델링된 객체 관리 | |||
* | |||
http://127.0.0.1:포트/myapp/ | |||
에서 최종 형태 확인 | |||
===== 20181109 ===== | |||
* 오랜만에 모인 관계로 저번 내용 모두 복습 | |||
* HTML에 CSS 적용해보기 (부트스트랩) | |||
{% load static %} | |||
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"> | |||
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css"> | |||
<link rel="stylesheet" href="{% static 'blog.css' %}"> | |||
* 템플릿 확장 | |||
1. {% block content %} - {% endblock %} | |||
2. {% extends 'base.html' %} : 상속 받고 블럭에 내용 끼워넣기 | |||
* 템플릿 링크 | |||
1. <a href="{% url 'post_detail' pk=post.pk %}">{{ post.title }}</a> | |||
2. path('post/<int:pk>/', views.post_detail, name='post_detail') | |||
* AWS ''''E''''C2 이용하여 웹 서버 만들기 | |||
* 도메인 주소 만들어 붙이기 ([https://freenom.com]) | |||
===== 20181130 ===== | |||
* Django 폼 | |||
* 글 작성 | |||
if request.method == "POST": | |||
form = PostForm(request.POST) | |||
if form.is_valid(): | |||
post = form.save(commit=False) | |||
#post.author = request.user | |||
post.published_date = timezone.now() | |||
post.save() | |||
return redirect('post_detail', pk=post.pk) | |||
else: | |||
form = PostForm() | |||
return render(request, 'post_edit.html', {'form': form}) | |||
{% block content %} | |||
<h1>New Post</h1> | |||
<form method="POST" class="post-form">{% csrf_token %} | |||
{{ form.as_p }} | |||
<button type="submit" class="save btn btn-default">Save</button> | |||
</form> | |||
{% endblock %} | |||
* 글 수정 (html은 앞에서 사용한것 재활용) | |||
post = get_object_or_404(Post, pk=pk) | |||
if request.method == "POST": | |||
form = PostForm(request.POST, instance=post) | |||
if form.is_valid(): | |||
post = form.save(commit=True) | |||
#post.published_date = timezone.now() | |||
#post.save() | |||
return redirect('post_detail', pk=post.pk) | |||
else: | |||
form = PostForm(instance=post) | |||
return render(request, 'post_edit.html', {'form': form}) | |||
* disqus로 댓글 달기 | |||
{% disqus_show_comments %} | |||
* css수정 | |||
margin-top: 25px; | |||
float: right; | |||
} | |||
.dt { | |||
display: inline-block; | |||
margin-top: 15px; | |||
margin-bottom: 25px; | |||
} | |||
* 도메인 통합 [http://robinjoo.tk] | |||
=== 참고 자료 === | === 참고 자료 === | ||
* [https://wikidocs.net/book/1] | * [https://wikidocs.net/book/1] | ||
* [https://docs.python.org/3/] | * [https://docs.python.org/3/] | ||
* [https://youtu.be/N4mEzFDjqtA | * [https://youtu.be/N4mEzFDjqtA] | ||
* [https://tutorial.djangogirls.org/ko] | |||
* [https://docs.djangoproject.com/ko/2.1/intro] | |||
Latest revision as of 01:08, 27 March 2026
소개
1학기
- 애플파이만큼 달콤한 파이썬 입문 스터디
- 참고 자료를 이용해 다같이 Python 3.6을 배워봅시다.
- 주 사용 자료는 점프 투 파이썬 (위키독스 문서) 입니다.
- 화요일 오후 6시에 진행.
2학기
- Django로 시작하는 웹 개발 입문 스터디
- 파이썬의 문법을 배웠으니 뭔가 만들어봅시다.
- 온라인 상의 튜토리얼 문서들을 참조합니다.
참가자
활동
20180515
- 점프 투 파이썬 기준 02-4까지 마침.
- 파이썬 언어 특징을 알아보고 설치.
- 입출력 방법, 변수와 자료형에 대해서 학습.
- if문, for문, while문 학습.
- 사용자 정의 함수 만드는 법을 알아봄.
- 형변환 방법을 알아봄.
- 문자열 자료형과 메소드들을 알아봄.
- 인덱싱과 슬라이싱에 대해 알아봄.
- 리스트, 튜플 개념을 학습.
- 리스트와 튜플의 메소드들을 알아봄.
- map 함수에 대해 알아봄.
- 백준에서 예제 문제 3개 풀이.
20180522
- 점프 투 파이썬 기준 04-3까지 마침.
- 연관 배열, 해시 테이블 개념 이해.
- dict와 set에 대해 알아봄.
- bool에 대해 알아봄.
- 다양한 종류의 연산자들을 알아봄.
- List Comprehension에 대해 알아봄.
- 함수에 대해 좀 더 깊은 학습.
- print, input에 대해 자세히 알아봄.
- 파일 입출력하는 법을 알아봄.
20180529
- 그동안 배운 것들 총 복습.
- 파이썬으로 백준의 다양한 문제를 품.
- 클래스에 대해 각자 집에서 자습.
20180928
- 인터넷과 서버에 대한 기초 개념
- 장고란 무엇인가, 프레임워크에 대한 이해
- 장고 설치 후 프로젝트 생성, It works 페이지 띄우기
- 장고 개발을 위해 필요한 콘솔 커맨드 위주로 공부
- 프로젝트 생성 :
django-admin.py startproject projectname .
- settings.py 수정
STATIC_URL = '/static/' STATIC_ROOT = os.path.join(BASE_DIR, 'static') ALLOWED_HOSTS = ['*']
- DB 업데이트 (마이그레이션 전체 적용) :
python manage.py migrate
- 슈퍼유저 계정 생성 :
python manage.py createsuperuser
- 서버 실행 :
python manage.py runserver 0.0.0.0:80
- 명령어 도움말 :
python manage.py 명령어 --help
20181005
- 장고의 MTV (Model-Template-View) 패턴 배우기
- 장고 Model을 만들고, 마이그레이션 적용하기
- 장고 View를 만들고, path() 메서드를 통해 URL 매칭
- render() 메서드를 통해 HTML(템플릿) 띄우기
- 쿼리셋을 활용해 객체 형태로 데이터베이스 다루기
- 템플릿 태그를 활용해 HTML에 동적 데이터 출력
- Model : 데이터 표현 / Template : 보여지는 형태 / View : HTTP 요청 받고 응답 반환 (모델과 템플릿을 연결)
- MVC 패턴과는 조금 다르다. (장고에서는 장고 프레임워크 자체를 컨트롤러라고 부른다.)
- 애플리케이션 생성 :
python manage.py startapp appname
- settings.py에 애플리케이션 추가 :
INSTALLED_APPS = [(기존항목..), 'appname']
- appname/models.py 코드 작성 (필드 속성은 여기 참고)
from django.utils import timezone
class modelname(models.Model):
author = models.ForeignKey('auth.User', on_delete=models.CASCADE)
title = models.CharField(max_length=200)
text = models.TextField()
created_date = models.DateTimeField(default=timezone.now)
published_date = models.DateTimeField(blank=True, null=True)
def publish(self):
self.published_date = timezone.now()
self.save()
def __str__(self):
return self.title
- 마이그레이션 파일 생성 :
python manage.py makemigrations appname
- 마이그레이션을 실제 DB에 적용 :
python manage.py migrate appname
- appname/admin.py에 모델 추가 :
admin.site.register(modelname)
- urls.py에 패턴 추가 :
path('myapp/', include('appname.urls'))
- appname/urls.py에 패턴 추가 :
path(, views.viewname, name='pathname')
- appname/views.py 코드 작성
from django.utils import timezone
from .models import modelname
def viewname(request):
objs = modelname.objects.all()
return render(request, 'templatename.html', {'keyname': objs})
- appname/templates/templatename.html 소스 작성
<body>
{% for i in keyname %}
<div>
<h1><a href="">Template:I.title</a></h1>
<p>published: Template:I.published date</p>
<p>Template:I.text</p>
</div>
{% endfor %}
</body>
</html>
http://127.0.0.1:포트/admin/
에서 모델링된 객체 관리
http://127.0.0.1:포트/myapp/
에서 최종 형태 확인
20181109
- 오랜만에 모인 관계로 저번 내용 모두 복습
- HTML에 CSS 적용해보기 (부트스트랩)
{% load static %}
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css">
<link rel="stylesheet" href="{% static 'blog.css' %}">
- 템플릿 확장
1. {% block content %} - {% endblock %}
2. {% extends 'base.html' %} : 상속 받고 블럭에 내용 끼워넣기
- 템플릿 링크
1. <a href="{% url 'post_detail' pk=post.pk %}">Template:Post.title</a>
2. path('post/<int:pk>/', views.post_detail, name='post_detail')
- AWS 'E'C2 이용하여 웹 서버 만들기
- 도메인 주소 만들어 붙이기 ([1])
20181130
- Django 폼
- 글 작성
if request.method == "POST":
form = PostForm(request.POST)
if form.is_valid():
post = form.save(commit=False)
#post.author = request.user
post.published_date = timezone.now()
post.save()
return redirect('post_detail', pk=post.pk)
else:
form = PostForm()
return render(request, 'post_edit.html', {'form': form})
{% block content %}
<h1>New Post</h1>
<form method="POST" class="post-form">{% csrf_token %}
Template:Form.as p
<button type="submit" class="save btn btn-default">Save</button>
</form>
{% endblock %}
- 글 수정 (html은 앞에서 사용한것 재활용)
post = get_object_or_404(Post, pk=pk)
if request.method == "POST":
form = PostForm(request.POST, instance=post)
if form.is_valid():
post = form.save(commit=True)
#post.published_date = timezone.now()
#post.save()
return redirect('post_detail', pk=post.pk)
else:
form = PostForm(instance=post)
return render(request, 'post_edit.html', {'form': form})
- disqus로 댓글 달기
{% disqus_show_comments %}
- css수정
margin-top: 25px;
float: right;
}
.dt {
display: inline-block;
margin-top: 15px;
margin-bottom: 25px;
}
- 도메인 통합 [2]