본문 바로가기

Web Programming/Django

(32)
댓글 기능 추가하기(모델 관계) 대부분의 웹에서 우리는 게시글에 대한 댓글들을 이용한다.그렇기에 우리도 댓글 기능을 추가하기 위해 모델관계에 대해 간략히 알아보고자 한다. 장고에서는 모델 관계를 설정하는데 있어 기본적으로 DB를 활용한다.외래키를 활용하여 모델들 간의 관계를 맺곤 한다. 12345678class Artist(models.Model): first_name = models.CharField(max_length=50) last_name = models.CharField(max_length=50) class work(models.Model): maker = models.ForeignKey(Artist, on_delete=models.CASCADE) name = models.CharField(max_length=100) rele..
Django 장고 텍스트에디터 사용하기(CKeditor) 기존의 Textarea가 아닌 TextEditor 를 통해서 글을 보다 편리하게 작성하고 활용할 수 있다 링크 : https://github.com/django-ckeditor/django-ckeditor 준비물 먼저 1. FORM 태그를 활용한 템플릿 2. static, media 태그 먼저 ckeditor 라이브러리를 설치해준다. 1$ pip install django-ckeditorcs 그 다음, App을 연결해준다. 123456# settings.pyINSTALLED_APPS = [ ... 'ckeditor', 'ckeditor_uploader',]cs 그리고 ckeditor path를 설정해준다. 123# settings.pyCKEDITOR_UPLOAD_PATH = 'uploads/'CKEDIT..
Form 활용하기 모델 형식에 맞는 입력공간 만들기하나하나하 Form 태그 만드는 것의 한계그래서 장고 내부의 forms.py를 활용하기! Forms.py1) 모델 기반 입력공간 만들기from django import forms.ModelForm2) 임의의 입력공간 만들기from django import forms.Form # model(Form.py)from django import forms.Formclass myForm(forms.ModelForm):class Meta:어떤 모델을 기반으로 한 입력공간인가그 모델 중 어떤 항목을 입력받을 것인가img = forms.ImageFieldtext = forms.TextField(or forms.CharField)tims = forms.DateTimeField project..
Blog 프로젝트 정리 흐름 1. 가상환경 실행 - 프로젝트 만들기 - 앱 만들기(Blog, Portfolio, Accounts) - 앱 연결 2. Model 제작 3. Static 처리 4. Media 처리5. url 만들기(include, 각각의 앱에 urls.py) 6. template 파일 7. view 처리 8. 그외 기능 추가 1. 가상환경 실행, 프로젝트 만들기, 앱 만들기, 앱 연결 먼저 Blog 프로젝트를 만들기에 앞서 가상환경을 실행하고 프로젝트와 앱을 만든다. 12345$ source myvenv/Scripts/activate$ django-admin startproject BlogProject$ python manage.py startapp blog$ python manage.py startapp port..
페이지 나누기(Pagination) 글의 수가 몇 개 없을 때는 상관이 없지만 글의 수가 무수히 많아질 경우에한 페이지에 한 번에 글을 전부 다 띄워주게 되면 로딩 시간과 사용에 불편함 등 여러가지 문제점이 발생한다그래서 페이지를 나누어서 보여주는 것이 효과적인데 장고에서는 Pagination을 활용하여 페이지를 나눌 수 있다 먼저, views.py에서 다음의 코드를 통해 기존의 모든 blog 객체를 주는 것에서 posts로 나누어서 주는 방법을 택한다 1234567891011# project/blog/views.py from django.core.paginator import Paginator...def home(request): blogs = Blog.objects blog_list = Blog.objects.all().order_by..
로그인 & 회원가입 1. 틀 완성 장고에서는 패키지를 통해 로그인과 회원가입 기능을 구현할 수 있다먼저 계정 app을 추가하고 포함시켜주어야 한다 1$ python manage.py startapp accountscs 그리고, 기존의 프로젝트 settings.py에서 해당 app을 연결시켜준다다음 accounts 앱의 template를 추가해주고 html 파일을 작성해준다 1234567891011121314151617181920212223242526# project/accounts/signup.html {% extends 'base.html' %} {% block content %} Sign Up! Username: Password: Confirm Password: {% endblock %}Colored by Color S..
가짜 데이터 만들기(Faker 패키지) * 가짜 데이터, 왜 필요한가 -> 데이터가 많은 상황을 염두해 둔 기능을 구현할 적에 데이터가 많은 상황 재현하기 페이커 패키지 설치 1$ pip install fakercs fake.py 파일 생성 123from faker import Fakermyfake = Faker()myfake = Faker('ko.KR') # 한국어 사용가능cs # Faker의 메소드를 통해 어떤 종류의 가짜 데이터를 뽑아낼지 결정 123456myfake.name()myfake.adderss()myfake.text()myfake.state()myfake.sentence()myfake.random_number() # 다양한 형태로 활용 가능!cs # seed 파일을 통해 데이터 저장해두기 1myfake.seed(1) # myf..
장고 보다 간편화하기(Base, url 정리) 1. HTML 중복 코드 방지 프로젝트의 폴더에서 templates 폴더를 만들고 그 곳에 base.html 파일을 작성해준다반복되서 사용될 html 코드 내용을 작성해주고(navbar, footer 등)본문 내용이 들어갈 부분을 {% block content%} {% endblock %} 으로 묶어준다 그리고 원래의 template 파일에 가서 본문에 해당하는 내용만 {% block content%} {% endblock %} 으로 감싸고html의 시작부분에 {% extends 'base.html' %}을 작성해준다 그리고 base.html의 위치를 알려주기 위해settings.py에 다음의 코드를 추가합니다 12345678# settings.pyTEMPLATES= [ { ... 'DIRS' :['pr..