Python

Python Django-1

INSPECT 2017. 1. 2. 21:01


---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.pyurl을 지정해주는 페이지이다.

-----------------------------------------------------------

기본적인 post를 만들어보자

 

python manage.py startapp posts(앱 이름)

그럼 posts라는 폴더가 생긴다.

 

MVC

M=model V=view C=controller

modelsapp과 같은 의미로 이해하면 된다. 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

#해주면 migrationsinitail.py에 변경사항이 적용된것을 볼 수 있다.

models의 내용이 변경되면 자동으로 db의 내용과 동기화되지는 않는다.

똑같게 해주기 위해 야 장고 우린 모델내용을 변경했어. 이것들(migrationsinitial.py내용)이 변경된 내용이다.” 라고 한다. 하지만 db내용을 변경하라고 하진 않는다.

 

python manage.py migrate

# 명령으로 인해 db에 반영된다.


Model to Admin

 

https://docs.djangoproject.com/en/1.9/ref/models/fields/

장고 공식주소이다. model field type들에 대한 설명을 볼 수 있다.

 

만든 modeladmin으로 가져오는 작업을 할 것이다.

(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>")

 

이런식으로 뷰를 만듦