render는 httpRespose 객체를 반환하는 함수로 template을 context와 엮어 httpResponse로 쉽게 반환해 주는 함수입니다.
template_name에는 불러오고 싶은 템플릿명이 들어갑니다.
context에는 View에서 사용하던 변수(dictionary 자료형)를 html 템플릿에서 전달하는 역할을 하고, key 값이 템플릿에서 사용할 변수이름, value값이 파이썬 변수가 됩니다.
1
2
fromIPython.displayimportImage# 주피터 노트북에 이미지 삽입
Image("C://Users/MyCom/jupyter-tutorial/Django-Project/Django-Inventory-System-Web/data/10.png")
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
fromdjango.shortcutsimportrender# HttpResponse: 응답에 대한 메타정보를 가지고 있는 객체
fromdjango.httpimportHttpResponsedefindex(request):#return HttpResponse('<h1> 메인 페이지 </h1>')
returnrender(request,'')# templates 폴더에서 index.html 불러옴
'''
예시)
return render(request, 'polls/index.html', context)
render() 함수는 request 객체를 첫번째 인수로 받고, 템플릿 이름을 두번째 인수로 받으며, context 사전형 객체를 세전째 선택적(optional) 인수로 받습니다. 인수로 지정된 context로 표현된 템플릿의 HttpResponse 객체가 반환됩니다.
'''defstaff(request):#return HttpResponse('관리자 페이지')
returnrender(request,'')
1.2 config 폴더 settings.py 파일 수정
templates 폴더 만들어 주고 setting.py 파일에서 ‘DIRS’ 부분을 수정해주었습니다.
그 이유는 templates 폴더에 있는 html 파일들을 웹페이지에 적용시켜 프론트 화면을 보여주기 위해서 입니다.
1
2
fromIPython.displayimportImage# 주피터 노트북에 이미지 삽입
Image("C://Users/MyCom/jupyter-tutorial/Django-Project/Django-Inventory-System-Web/data/11.png")
터미널에 python manage.py collectstatic 입력 하면 asert 폴더 자동 생성됩니다.
python manage.py collectstatic
Django 프로젝트를 Deploy할 때 흩어져 있는 Static 파일들을 모아 특정 디렉토리로 옮기는 작업을 할 수 있는데, 이 작업은 위해 “./manage.py collectstatic” 명령을 사용합니다.
즉, collectstatic 명령은 Django 프로젝트와 각 Django App 안에 있는 Static 파일들을 settings.py 파일 안에 정의되어 있는 STATIC_ROOT 디렉토리로 옮기는 작업을 수행합니다.
1
2
fromIPython.displayimportImage# 주피터 노트북에 이미지 삽입
Image("C://Users/MyCom/jupyter-tutorial/Django-Project/Django-Inventory-System-Web/data/12.png")
1.9 터미널에 python manage.py createsuperuser 입력하면 user db 생성됩니다.
1
2
fromIPython.displayimportImage# 주피터 노트북에 이미지 삽입
Image("C://Users/MyCom/jupyter-tutorial/Django-Project/Django-Inventory-System-Web/data/18.png")
1.10 Superuser 생성된 것을 아래 그림에서 확인 할 수 있습니다.
1
2
fromIPython.displayimportImage# 주피터 노트북에 이미지 삽입
Image("C://Users/MyCom/jupyter-tutorial/Django-Project/Django-Inventory-System-Web/data/19.png")
1.11 Product db 생성된 것을 아래 그림에서 확인 할 수 있습니다.
1
2
fromIPython.displayimportImage# 주피터 노트북에 이미지 삽입
Image("C://Users/MyCom/jupyter-tutorial/Django-Project/Django-Inventory-System-Web/data/20.png")
위에 페이지를 이용해서 전기주전자를 등록했습니다. ** Product db 성공적으로 생성되었습니다. **
1
2
fromIPython.displayimportImage# 주피터 노트북에 이미지 삽입
Image("C://Users/MyCom/jupyter-tutorial/Django-Project/Django-Inventory-System-Web/data/25.png")
이 사진은 admin.py 파일에서 작성된 페이지입니다.
list_filter = [‘category’] 설정해주어서 위의 그림 화살표 폼이 만들어 졌습니다.
admin.py 파일
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
fromcsvimportlist_dialectsfromdjango.contribimportadminfrom.modelsimportProduct,Orderfromdjango.contrib.auth.modelsimportGroup# 맨위 상단 이름 변경
admin.site.site_header='재고 관리 시스템 관리자 페이지'classProductAdmin(admin.ModelAdmin):list_display=('name','category','quantity')list_filter=['category']admin.site.register(Product,ProductAdmin)# admin.site.unregister(Group) # Group 기능 제거할수 있는 방법
1.12 dashboard 폴더 models.py 파일에 Order 클래스 추가
1
2
fromIPython.displayimportImage# 주피터 노트북에 이미지 삽입
Image("C://Users/MyCom/jupyter-tutorial/Django-Project/Django-Inventory-System-Web/data/26.png")
fromcalendarimportcfromsre_constantsimportCATEGORYfromtabnannyimportverbosefromunicodedataimportcategory,namefromdjango.dbimportmodelsfromdjango.contrib.auth.modelsimportUserCATEGORY=(('Stationary','Stationary'),('Electronics','Electronics'),('Food','Food'),)classProduct(models.Model):name=models.CharField(max_length=100,null=True)category=models.CharField(max_length=20,choices=CATEGORY,null=True)quantity=models.PositiveIntegerField(null=True)def__str__(self):# Product 제품 이름 보이게 설정
returnf'{self.name}'classOrder(models.Model):product=models.ForeignKey(Product,on_delete=models.CASCADE,null=True)staff=models.ForeignKey(User,models.CASCADE,null=True)order_quantity=models.PositiveIntegerField(null=True)date=models.DateTimeField(auto_now_add=True)# str : 인스턴스 출력 형식 함수
def__str__(self):returnf'{self.product} ordered by {self.staff.username}'
Leave a comment