About Django Project [KOR]
장고 프로젝트

장고프로젝트 만드는 순서
사전 준비- Eclipse 에서 File -> other -> PyDev Django Project
- 생성된 프로젝트 우클릭 후 Django -> Create application
- settings.py 에서 INSTALLED_APPS 리스트 마지막에 app 이름을 추가한다
- app 우클릭 후 "templates" 폴더와 "static" 폴더를 생성하고, static 안에는 "css", "js", "images" 폴더를 생성한다
-
만일 외부 Database에 Table을 생성하기 원하면 밑의 내용을 settings.py 안의 DATABASES 대신에 넣는다
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'db', # DB명 : db는 미리 작성되어 있어야 함. 'USER': 'root', # 계정명 'PASSWORD': '123', # 계정 암호 'HOST': '127.0.0.1', # DB가 설치된 컴의 ip 'PORT': '3306', # DBMS의 port 번호 } }
외부 데이터베이스의 이미 존재하는 테이블을 사용하려면, 위의 DATABASES를 덮어씌운다음에
아나콘다 프롬프트로 가서, 프로젝트 경로로 간 후 python manage.py inspectdb > 아무이름.py 를 친다
그러면 아무이름.py 파일이 생기고 내부에 있는 class테이블을 manage.py로 복사하고 아무이름.py는 지우면 된다 -
settings.py 에서 TIME_ZONE = 'Asia/Seoul' 으로 바꾸고, USE_TZ = False 로 바꾼다
또 밑으로 내려가다 보면 STATIC_URL이 있는데 그밑에 이것을 추가한다
import os STATICFILES_DIRS = ( os.path.join(BASE_DIR, 'static'), ) - models.py 에다가 Table을 Class로 생성한다
# 예시 class Guest(models.Model): # myno = models.AutoField(auto_created=True, primary_key=True) # 이걸쓰면 id가 안만들어짐 title = models.CharField(max_length=50) content = models.TextField() regdate = models.DateTimeField() - 프로젝트 우클릭 후 Django -> Make Migrations (Table 생성)
- 프로젝트 우클릭 후 Django -> Migrate
- 아나콘다 프롬프트에서 "cd 프로젝트경로" 를 친후 "python manage.py createsuperuser"를 입력하여 admin 계정을 만든다
-
admin.py 에서 밑의 내용을 입력한다
from 앱이름.models import 테이블이름 class admin클래스명(admin.ModelAdmin): list_display = ('id', '칼럼1', '칼럼2', .....) admin.site.register(테이블이름, admin클래스명)
프로젝트 순서
- urls.py 에서 urlpatterns 리스트 안에 path를 적어준다.
path("url명", views.함수명), views 는 import 해줘야 한다 - views.py 에서 함수 정의를 한다. def 함수명(request):
ORM을 쓸거면 Table이름을 import 해주고, 마지막에 return render(request, "html이름", {"이름": html에게 넘겨줄 변수}) 형식으로 리턴 해준다 - templates 폴더 안에 html 파일을 만들고 꾸며준다
ORM 문법
select * from 테이블; <=> 테이블.objects.all()
select 칼럼1,칼럼2 from 테이블; <=> 테이블.objects.values_list('칼럼1, 칼럼2')<
select * from 테이블 where 칼럼='value'; <=> 테이블.objects.filter(칼럼='value')
select AVG(칼럼2) from 테이블 where 칼럼 != 'value'; <=> 테이블.objects.exclude(칼럼='value').aggregate(Avg('칼럼2'))
select distinct 칼럼 from 테이블; <=> 테이블.objects.values('칼럼').distinct()
소계함수
테이블.objects.aggregate(Avg('칼럼'))
테이블.objects.aggregate(Sum('칼럼'))
테이블.objects.aggregate(Max('칼럼'))
테이블.objects.aggregate(Count('칼럼'))
정렬방법
테이블.objects.all().order_by('칼럼') # ASC
테이블.objects.all().order_by('-칼럼') # DESC
테이블.objects.all().order_by('-칼럼')[0:2] # DESC 해서 0번째 1번째
자료입력
테이블(칼럼1 = 'value', 칼럼2 = request.POST.get("name"))
Categories :
Practice