About Django Project [KOR]

장고 프로젝트

여러가지 소스 찾기

사진 출저 : http://mytardis.readthedocs.org/en/latest/architecture.html

장고프로젝트 만드는 순서

사전 준비
  1. Eclipse 에서 File -> other -> PyDev Django Project
  2. 생성된 프로젝트 우클릭 후 Django -> Create application
  3. settings.py 에서 INSTALLED_APPS 리스트 마지막에 app 이름을 추가한다
  4. app 우클릭 후 "templates" 폴더와 "static" 폴더를 생성하고, static 안에는 "css", "js", "images" 폴더를 생성한다
  5. 만일 외부 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는 지우면 된다
  6. settings.py 에서 TIME_ZONE = 'Asia/Seoul' 으로 바꾸고, USE_TZ = False 로 바꾼다
    또 밑으로 내려가다 보면 STATIC_URL이 있는데 그밑에 이것을 추가한다
    import os
    
    STATICFILES_DIRS = (
        os.path.join(BASE_DIR, 'static'),
    )
  7. 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()
  8. 프로젝트 우클릭 후 Django -> Make Migrations (Table 생성)
  9. 프로젝트 우클릭 후 Django -> Migrate
  10. 아나콘다 프롬프트에서 "cd 프로젝트경로" 를 친후 "python manage.py createsuperuser"를 입력하여 admin 계정을 만든다
  11. admin.py 에서 밑의 내용을 입력한다
    from 앱이름.models import 테이블이름
    
    class admin클래스명(admin.ModelAdmin):
        list_display = ('id', '칼럼1', '칼럼2', .....)
        
    admin.site.register(테이블이름, admin클래스명)

프로젝트 순서
  1. urls.py 에서 urlpatterns 리스트 안에 path를 적어준다.
    path("url명", views.함수명), views 는 import 해줘야 한다
  2. views.py 에서 함수 정의를 한다. def 함수명(request):
    ORM을 쓸거면 Table이름을 import 해주고, 마지막에 return render(request, "html이름", {"이름": html에게 넘겨줄 변수}) 형식으로 리턴 해준다
  3. 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