forms, 게시판만들기 기초

2021. 7. 29. 03:00python/Django

728x90

*커트롤 + 마우스 = 이동

url , urls.py 마지막에'/'안주면 못찾는다

-변수나 이름들은 'list'와 같은 program keyword들은 오류가 날수 있기 때문에 피해야 한다

LectureSampleProject(0728-3시버전.zip
0.03MB


static (정적): 고정된, 불변
dynamic (동적) : 유동적, 변경가능


 


setting

ALLOWED_HOSTS = ['localhost', '127.0.0.1'] 둘다 같은 뜻

TEMPLATES 'DIRS': [os.path.join(BASE_DIR,'templates')]
-경로를 병합하여 새 경로 생성
-templates 기본 위치 추가
-적은다음 전체폴더 안에 templates폴더를 만든다
-했갈릴수 있음으로 app폴더 - template - app폴더를 만들어 app template만 따로 이용


AUTH_PASSWORD_VALIDATORS = 
-사용자 인증과 session처리
-장고가 제공해주는 User, Group table을 이용할 수 있어요!

static files = css, javascript, images
STATIC_URL = '/static/'
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]
-당연히 전체 폴더 밑에 static 파일을 만든다
-위 파일안에 css, image,js 파일을 만들어 쉽게 사용
-/static/ url이 떨어지면 STATICFILES_DIRS 에서 찾아라는 뜻


MEDIA_URL = '/media/'
MEDIA_ROOT = [os.path.join(BASE_DIR, 'media')]
-static과 같은 맥락이며 당연히 media파일을 만들어야 한다
-서버에 저장되는 동적파일들이 있을 수 있어요!(파일업로드기능)

model
models.DateTimeField(auto_now=True)-자동으로 날짜갱신
__str__ 은 관리자페이지에서 보여주는 기준

url
mainpage를 view작업 없이 바로 template를 사용할거야(url -> html 바로가기)
1.상단에 from django.views.generic.base import TemplateView
path('', TemplateView.as_view(template_name='index.html'), name='home'),
2. mainpage 특정 app에 포함되지 않기 때문에
바구니폴더 -template폴더 안에 index.html 생성

 

django.views.geveric.base import TemplateView

path(''. TemplateView.as.view(template_name='이름.html'), name='home')



-폼 (form) 사용자가 입력한 값을 바로db에 넣기 편한 작업

(0)app폴더 안에 forms.py 만들기
(1)상단에 django import forms
  from .models import (사용할model class)
(2)클래스를 만든다   (class 이름 만들때 일반적으로 모델이름form)
class BoardForm(form.ModelForm):
(3)위(2)에서 만든 class 밑에 클래스를 만든다
class Meta:
model = (내가만들 form에 근원이 되는 class)
field = (화면에 보여질 colum)

-view에서 form사용하기
상단에 from . forms import BoardForm
def b_create(request):
board_form = BoardForm(request.POST)
return render(request, 'bbs/create.html', {
    'board_form': board_form      })

html에 form 처리   (feat boot strapt)
-form을 그냥 처리하면 일반 작은 상자가 나오게 된다
(1) terminal
pip install django-bootstrap4
(2)settings.py
INSTALLED_APPS - 'bootstrap4'
-pip upgrade랑은 무관
(3)html
상단에 {% load bootstrap4 %}
{% bootstrap_form 어쩌고 %}
{% bootstrap_form board_form %}


html jquery 사용하기
body
<script src="/static/js/menu_btn.js"></script>

바구니파일 - static - 자바파일

$(function(event) {
    $('#new_post_btn').on('click',function(event) {
        document.location.href = '/bbs/create/'
    })
})


 

 

-같은 url 2가지 방식의 request
(1)<form>tag에 action을 적지 않는다면 현재 url로 request된다
(2)같은 패이지라도 request방식이 위와같다면 get과 post로 나뉜다
(3)views.py
def b_create(request):

    if request.method == 'POST':
        # 새글작성화면에서 새글 저장 버튼을 눌렀을 때 실행
        # 사용자가 입력한 내용으로 데이터베이스에 입력을 해야 해요!
        board_form = BoardForm(request.POST)
#입력받은 데이터를 가지고 넘어감

        if board_form.is_valid():
# is_valid는 정상이냐
            new_post = board_form.save(commit=False)
            new_post.save()
            return redirect('bbs:b_list')
   # redirect는 재접속을 의미하며 사용시 상단 render 옆에 , redirect추가      


    else:
        # 리스트화면에서 새글 작성 버튼을 눌렀을 때 실행
        board_form = BoardForm()

        #form 객체화 시키기
        return render(request, 'bbs/create.html', {
            'board_form': board_form
        })

'python > Django' 카테고리의 다른 글

Django python 파일 실행  (0) 2021.08.06
open api xml형식 가져오기  (0) 2021.08.05
base.html (베이스html)  (0) 2021.07.28
상대경로 절대경로  (0) 2021.07.28
django 요약  (0) 2021.07.28