Python Django-1
---Start---
프로젝트 있는 폴더로 들어와서
django-admin.py startproject malwarepect
프로젝트로 들어와서 (cd malwarepect)
python manage.py runserver
python manage.py migrate
DB에 변경사항을 저장시키는 명령이다.
python manage.py createsuperuser 슈퍼유저는 그냥 기본으로 만든다.
db는 기본적으로 sqlite3이다. test용으로 정말 좋다.
local주소 뒤에 /admin을 치면 admin페이지로 들어간다.
앱들을 생성하고 앱이 어떻게 생겼는지 이후 어떻게 수정해야하는지 시험할 수 있다.
superuser계정으로 로그인한다.
urls.py는 url을 지정해주는 페이지이다.
-----------------------------------------------------------
기본적인 post를 만들어보자
python manage.py startapp posts(앱 이름)
그럼 posts라는 폴더가 생긴다.
MVC
M=model V=view C=controller
models는 app과 같은 의미로 이해하면 된다. db에서 우리가 원하는 일을 associating하는 것이다.
새로만든 posts앱폴더에서 models.py에서
class Post(models.Model):
title = models.CharField(max_length=120) username 같은 것들을 쓸 때 쓴다.
content = models.TextField()
updated = models.DateTimeField(auto_now=True, auto_now_add=False)
# #업데이트할때마다 시간갱신
timestamp = models.DateTimeField(auto_now=False, auto_now_add=True)
#1번만 갱신
def __unicode__(self): #파이썬3.버전
return self.title
def __str__(self): #파이썬2.버전
return self.title
settings.py에서 APPS에 만든 앱(posts)을 추가시켜준다
(뒤에 쉼표는 똑같이 써준다)
python manage.py makemigrations
#해주면 migrations에 initail.py에 변경사항이 적용된것을 볼 수 있다.
models의 내용이 변경되면 자동으로 db의 내용과 동기화되지는 않는다.
똑같게 해주기 위해 “야 장고 우린 모델내용을 변경했어. 이것들(migrations의 initial.py내용)이 변경된 내용이다.” 라고 한다. 하지만 db내용을 변경하라고 하진 않는다.
python manage.py migrate
# 명령으로 인해 db에 반영된다.
Model to Admin
https://docs.djangoproject.com/en/1.9/ref/models/fields/
장고 공식주소이다. model field type들에 대한 설명을 볼 수 있다.
만든 model을 admin으로 가져오는 작업을 할 것이다.
앱(posts)/admin.py로 와서
from .models import Post #from posts.models import Post 라고 썼을 때와 같다.
class PostModelAdmin(admin.ModelAdmin):
class Meta:
model = Post
admin.site.register(Post, PostModelAdmin)
이것이 기본 폼이라고 생각하면 된다.
from .models import Post
class PostModelAdmin(admin.ModelAdmin):
list_display = ['title','updated', 'timestamp']
#list_display_links = ['updated']
#list_filter=['updated','timestamp']
search_fields=['title','content']
class Meta:
model = Post
admin.site.register(Post, PostModelAdmin)
#admin페이지에 등록하는 명령이다.
자신이 옵션을 조절해서 customizing하면 된다.
-----------------------------------------------------------
CRUD
C=create -- POST -- make new
R=retrieve -- GET -- list/search
U=update -- PUT/PATCH -- edit
D=delete -- DELETE -- delete
--View작성--
앱(posts)에서 views.py에
from django.http import HttpResponse 해주고
def post_home(request):
return HttpResponse("<h1>Hello!</h1>")
이런식으로 뷰를 만듦