Beispiel #1
0
def qupdate(request, q_id):
    #수정할 대상을 추출
    #id가 q_id와 같은 값을 저장한 객체를 q변수에 저장
    q = get_object_or_404(Question, id=q_id)
    #GET - 수정 대상의 정보를 바탕으로 입력양식 제공
    if request.method == "GET":
        #instance 매개변수 : 데이터베이스에 저장된 객체를
        #연동할 수 있는 변수. 연동한 모델폼객체는 HTML코드로
        #변환 시, 기본값이 객체 변수값으로 채워져있음
        form = QuestionForm(instance=q)
        #동일한 폼객체를 사용하기 때문에 동일한 HTML파일을 사용함

        return render(request, 'vote/qform.html', {'form': form.as_table})
    #POST - 사용자가 입력한 데이터로 수정
    elif request.method == 'POST':
        #q 객체의 데이터를 사용자의 입력으로 덮어쓰기한 폼객체생성
        form = QuestionForm(request.POST, instance=q)
        #q변수에 저장된 값을 사용자 입력값으로 변경
        #Question 객체에 빈칸이 없으므로 바로 데이터베이스에 저장
        w = form.save()
        print('q변수의 id :', q.id)
        print('w변수의 id :', w.id)
        #detail 뷰함수로 이동
        #매개변수에 들어갈 값으로 w변수의 id값 전달
        return HttpResponseRedirect(reverse('vote:detail', args=(w.id, )))
Beispiel #2
0
def qregister(request):
        #사용자의 요청방식을 구분
        #GET방식 -> HTML을 전달
        if request.method == "GET":
            #Form클래스 이용방법
            #객체 생성 후 as_p, as_table, as_ul 함수를
            #호출하면 <input>태그를 자동생성해줌
            form = QuestionForm()
            print(form.as_p())
            #입력양식을 행,열단위로 HTML코드 생성
            html = form.as_table()
            return render(request,'vote/qform.html',
                                        {'form' : html})
        # POST방식 -> 사용자 입력기반의 Question객체 생성
        elif request.method == "POST":
            # request.POST : 사용자 입력 데이터 저장 변수
            # 사용자가 보낸 데이터를 기반으로 QuestionForm
            # 객체 생성
            form = QuestionForm(request.POST)
            # 사용자가 보낸 데이터가 유효한 값인지 확인
            if form.is_valid():
                """
                폼객체.is_valid() : 사용자 입력이 유효한경우 True반환,
                추가적으로 cleaned_data 변수를 사용해 데이터를 추출할수있음
                만약에 유효한값이 아닌경우 False반환,
                사용자의 입력을 다시 받을 수 있도록 HTML코드를 전달    
                
                모델폼객체는 연동된 모델객체를 생성할 수 있음
                모델폼객체.save() : 반환값 생성된 모델객체.
                내부적으로 데이터베이스에 새로운 객체가 저장됨
                현재 QuestionForm객체로 title변수만 값이 작성되있어
                데이터베이스에 바로 저장을 할 수 없음(pub_date변수값없음)
                
                모델폼객체.save(commit=False) : 데이터베이스에 저장하지않고,
                모델객체만 반환함
                """
                # form 객체와 연동된 모델객체를 q변수에 저장
                # q : Question객체를 저장한 상태
                q = form.save(commit=False)
                print('생성할 객체의 제목', q.title)
                print('id 변수값 : ' , q.id)
                # 새로 생성할 객체에 서버컴퓨터의 현재날짜를 저장
                q.pub_date = datetime.now()
                # 객체를 데이터베이스에 저장
                q.save()
                print('객체 생성 후 id 변수값 : ', q, id)
                # reverse 함수 :  파이썬 코드내에서 별칭기반으로
                # URL을 찾을 수 있는 함수
                # reverse(별칭 문자열, args=(매개변수값,))
                # index 뷰함수 호출
                return HttpResponseRedirect(reverse('vate:index'))
            else:
                    pass
Beispiel #3
0
def q_registe(request):
    #사용자 요청이 GET인지 POST인지 구분
    if request.method == 'GET':
        #QuestionForm의 객체를 생성
        #QuestionForm 객체를 생성할 때 입력값이 없는 형태로 생성하면 input태그에 아무런 값도 입력되어있지 않은 상태의 객체가 생성됨
        form = QuestionForm()

        #객체를 바탕으로 HTML코드로 변환
        #as_p, as_table, as_ul 함수 : form객체에 입력할 수 있는 공간들을 <input>태그로 변환하면서 <p>, <tr>과 <td>, <li> 태그로 감싸주는 기능이 있는 함수
        rendered = form.as_p()
        print(rendered)

        #변환값을 HTML파일에 전달
        return render(request, 'vote/q_registe.html', {'rendered': rendered})

    elif request.method == 'POST':
        #QuestionForm 객체를 생성 - 사용자 입력을 바탕으로 생성
        form = QuestionForm(request.POST)

        #QuestionForm 객체와 연동된 Question 객체를 생성 및 DB에 저장
        #form.save(commit=False) : 연동된 모델 클래스의 객체로 변환만 하는 함수
        #form.save() : 연동된 모델 클래스의 객체를 생성 및 DB에 저장
        new_q = form.save()
        print(new_q)

        #생성된 Question 객체의 id 값으로 detail뷰의 링크를 전달
        return HttpResponseRedirect(reverse('detail', args=(new_q.id, )))
Beispiel #4
0
def q_update(request, q_id):
    #수정할 Question 객체를 추출
    #get_object_or_404 : 모델클래스의 객체들중 id변수값을 이용해
    #객체 한개를 추출하는 함수. 단, 해당id값으로 된 객체가 없는경우
    #사용자의 요청에 잘못있는 걸로 판단해 404에러페이지를 전달함
    q = get_object_or_404(Question,id=q_id)
    #조건문 - POST, GET 구분
    if request.method == "GET":
        #GET요청시 QuestionForm객체생성-수정할 객체를 바탕으로 생성
        #폼클래스 객체생성시 instance매개변수에 연동된 객체를 전달하면
        #해당 객체가 가진 값을 input태그에 채운상태로 폼객체가 생성됨
        form = QuestionForm(instance=q)
        #as_table() : 각 입력공간과 설명을 <tr>과<td>로 묶어주는 함수
        result = form.as_table()
        return render(request,"vote/q_update.html",
                      {'result':result})
    elif request.method == "POST":
        #POST 요청시 QuestionForm객체생성-수정대상객체+사용자입력
        #수정대상 객체와 사용자입력으로 폼객체 생성시
        #기존 객체 정보를 사용자입력으로 수정한 상태의 폼객체가 생성됨
        form = QuestionForm(request.POST,instance=q)
        qq = form.save() #사용자입력으로 수정한 결과를 데이터베이스에 반영
        print(q, qq)
        #detail 뷰로 이동
        return HttpResponseRedirect(
            reverse('detail', args=(q.id,) ) )
Beispiel #5
0
def q_update(request, q_id):
    #수정할 Question 객체를 추출 하는 과정 필요
    #q_id: 어떤 객체를 수정할지 정보가 필요함
    #get_object_or_404 : 모델클래스의객체들중 id변수값을 이용해
    #객체 한개를 추출하는 함수. 단, 해당id값으로 된 객체가 없는 경우
    #사용자의 요청에 잘못있는 걸로 판단해 404에러 페이지를 전달한다.
    q = get_object_or_404(Question, id=q_id)
    #Question 객체들을 대상으로 id값이 q_id값이 동일한 녀석을 q에 저장하겠다.
    #단, id값이 없으면 404에러값을 사용자에게 전달하겠다.

    #조건문 - POST, GET인지 구분 필요
    #GET으로 요청시 QuestionForm 객체 생성 - 수정할 객체를 바탕으로 생성

    if request.method == "GET":
        #form 클래스 객체 생성시 instance매개변수에 연동된 객체를 전달하면
        #해당 객체가 가진 값을 input태그에 채운 상태로 form 객체가 생성된다.
        form = QuestionForm(instance=q)
        #인스탄스 매개변수 사용하는 이유는 - 수정할때 수정하려는 것의 제목과 내용이 뜨도록 하기 위해서 (네이버 글 수정하듯이)
        #as_table():각 입력공간과 설명을 <tr>과 <td>로 묶어주는 함수
        result = form.as_table()
        return render(request, "vote/q_update.html", {'result': result})
        #누구한테 보낼것이냐(request), 무엇을 보낼것이냐("html"), 그 값을 보낼때 어떤 값으로 수정해서 보낼것이냐(딕셔너리형태)

    #POST 요청시 QuestionForm 객체생성 - 수정대상객체 + 사용자 입력으로 생성
    elif request.method == "POST":
        #수정대상객체와 사용자입력으로 form객체 생성시
        #기존의 객체 정보를 수정한 상태의 form 객체가 생성됨
        form = QuestionForm(request.POST, instance=q)
        qq = form.save()  #사용자입력으로 수정한 결과를 데이터베이스에 반영
        print(q, qq)
        #detail view로 이동
        return HttpResponseRedirect(reverse('detail', args=(q.id, )))
Beispiel #6
0
def qregister(request):
    '''
    사용자의 요청방식을 구분
    get 방식 -> html을 전달
    post 방식 ->사용자 입력기반의 Question객체 생성
    '''
    if request.method == 'GET':
        form = QuestionForm()
        print(form.as_p())
        #입력양식을 행, 열단위로 html코드 생성
        html = form.as_table()
        return render(request,'vote/qform.html', {'form': html})
    
  #  Form클래스 이용방법
 #   객체 생성 후 as_p, as_table, as_ul 함수를 호출하면 <input>태그를 자동생성해줌.
    
    elif request.method == 'POST':
    #    request.POST: 사용자 입력 데이터 저장변수-
    #    사용자가 보낸 데이터를 기반으로 QuestionFrom
    # 객체 생성
       form= QuestionForm(request.POST)
       #사용자가 보낸 데이터가 유효한 값인지 확인
       if form.is_valid():
           '''
           폼객체.is_valid(): 사용자 입력이 유효할 시 True반환,
           추가적으로 cleaned_data 변수를 사용해 데이터를 추출할 수 있음.
           유효값이 아닐 경우 False반환, 사용자의 입력을 다시 받을 수 있도록 html코드 전달
          모델폼 객체는 연동된 모델 객체를 생성할 수 있음.
          모델폼객체.save(): 반환앖 생성된 모델객체. 내부적으로 데이터 베이스에 새호운 객체가 저장됨.
          현재 QuestionForm 객체로 title변수만 값이 작성되어있어 데이터 베이스에 바로 저장 불가(pub_date 변수 값 없음)
                모델폼객체.save(commit=False):데이터 베이스에 저장 안 하고 모델 객체만 반환함.
           
           '''
           #form 객체와 연동된 모델 객체를 q변수에 저장
           #q : Question 객체를 저장한 상태
           q= form.save(commit=False)
           print('생성할 객체의 제목', q.title)
           print('id 변수값:',q.id)
           #새로 생성할 객체에 서버컴퓨터의 현재 날짜를 저장
           q.pub_date = datetime.now()
           #객체를 데이터베이스에 저장
           q.save()
           print('객체 생성 후 id 변수 값:', q.id)
           #reverse 함수: 파이썬 코드 내에서 별칭 기반으로 url을 찾을 수 있는 함수
           #reverse(병칭 문자열, args=(매개변수값,))
           #index 뷰 함수 호출
           return HttpResponseRedirect( reverse('vote:index') )
       else:
           pass
Beispiel #7
0
def qregiste(request):
    #웹클라이언트의 요청방식 구분
    #-> 하나의 뷰에 두가지 기능을 구현하고자 함
    #GET 방식요청
    if request.method == "GET":
        #폼클래스 객체를 생성 및 HTML파일 전달
        #폼클래스 객체 생성 시, 매개변수를 입력하지 않으면,
        #<input>태그에 아무런 값도 채워져있지 않은상태로 생성됨
        obj = QuestionForm()
        '''
        form 객체를 기반으로 HTML 코드에 들어갈 <input>태그를 생성할 때,
        as_p(), as_table(), as_ul() 함수를 사용할 수 있음.
        as_p : 설명과 입력공간이 <p>태그로 묶여있는 HTML코드로 변환
        as_table : 설명과 입력공간이 한 행(<tr>)에 묶여있는 HTML코드로 변환
        as_ul : 설명과 입력공간이 리스트아이템(<li>)에 묶여있는 HTML코드로 변환
        '''
        print('as_table() 결과 : ', obj.as_table())
        return render(request, 'vote/qregiste.html', {'form': obj.as_table()})
    #POST 방식요청
    elif request.method == "POST":
        #사용자 입력 기반으로 폼클래스객체를 생성
        #request.POST : POST요청 시 동봉된 사용자의 입력데이터
        obj = QuestionForm(request.POST)
        #폼클래스 객체를 연동된 모델클래스 객체로 변환
        #q : 사용자 입력으로 name변수에 값이 채워져있는 Question객체
        #폼객체.save() : 데이터베이스에 사용자 입력 기반의 새로운 객체가
        #저장되면서 새로운 객체를 반환하는 함수
        #사용자는 pub_date변수에 값을 입력할수 없기때문에, 폼객체를 바로
        #데이터베이스에 저장할 수 없음(pub_date변수의 값이 없는상태)
        #따라서 Question객체로 변환 한 뒤, 비어있는 변수를 채워줘야함
        #->폼객체.save(commit=False)
        q = obj.save(commit=False)
        #데이터베이스에 저장되지않은 변수의 id값은 None이뜸
        print('저장 전 id변수 값 :', q.id)
        #값이 채워져있지않은 변수에 값을 채움
        q.pub_date = datetime.now()  #컴퓨터의 현재날짜/시간을 대입
        #데이터베이스에 새로만든 모델객체 저장
        #모델객체.save() : 새로운객체를 저장하거나 기존객체의 변수값변경을 데이터베이스에
        #저장할 수 있음
        q.save()
        print('저장이 된 다음의 id변수값 : ', q.id)
        #다른 URL로 이동
        return HttpResponseRedirect('/vote/%s/' % q.id)
Beispiel #8
0
def qregiste(request):
    #웹클라이언트의 요청방식 구분 -> 하나의 뷰에 두가지 기능을 구현하고자 함
    if request.method == "GET":
        #폼클래스 객체 생성시, 매개변수를 입력하지 않으면 <input>태그에 아무런 값도 채워지지 않는 상태로 생성됨
        #GET방식 요청
            #폼클래스 객체를 생성하고 HTML파일 전달
        obj = QuestionForm()
        '''
        form 객체를 기반으로 HTML 코드에 들어갈 <input> 태그를 생성할 때, as_p(), as_table(), as_ul()함수를 사용 가능
        as_p : 설명과 입력공간이 <p>태그로 묶여있는  HTML코드로 변환
        as_table : 설명과 입력공간이 한 행<tr>에 묶여있는 HTML코드로 변환
        as_ul : 설명과 입력공간이 리스트아이템<li>에 묶여있는 HTML코드로 변환
        '''
        print('as_table() 결과 : ',obj.as_table())
        return render(request,'vote/qregiste.html',{'form':obj.as_table()})
    
    elif request.method == "POST":
        #POST 방식 요청
            #사용자 입력 기반으로 폼클래스 객체 생성
            
        #request.POST : POST요쳥 시 동봉된 사용자의 입력데이터
        obj = QuestionForm(request.POST)
        #폼클래스 객체를 연동된 모델클래스 객체로 변환
            
        #q : 사용자 입력으로 name변수에 값이 채워져 있는 Question객체
        #폼객체.save() : 데이터베이스에 사용자 입력 기반의 새로운 객체가 저장되면서 새로운 객체를 반환하는 함수
        #사용자는 pub_date변수에 기반을 입력할 수 없기에, 폼객체를 바로 데이터베이스에 저장할 수 없음(pub_date변수의 값이 없는 상태)
        #따라서 Question객체로 변환한 뒤, 비어있는 변수를 채워줘야함 -> 폼객체.save(commit=False)
        q = obj.save(commit=False) #모델객체를 만들어주면서 비어있는 칸을 채우기 위해 데이터베이스의 저장안한다는 의미
        #데이터베이스에 저장되지 않은 변수의 id값은 None이 뜬다
        print('저장 전 : ', q.id) 
        #값이 채워져 있지 않은 변수에 값을 채움
        #q.pub_date = datetime.now() #컴퓨터의 현재시간/날짜 대입
        q.attendance = 0
        q.absence = 0
        #데이터배이스에 새로만든 모델객체 저장
        #모델객체.save() : 새로운 객체를 저장하거나 기존객체의 변수값변경을 데이터베이스에 저장할 수 있음
        q.save()
        print('저장 후: ', q.id)
        #다른 URL로 이동
        return HttpResponseRedirect('/vote')
Beispiel #9
0
def qregiste(request):
    #웹클라이언트의 요청방식 구분
    #-> 하나의 뷰에 두가지 기능을 구현하고자함
    #get 방식요청
    if request.method == "GET":
        #폼클래스 객체를 생성 및 HTML파일 전달
        #폼클래스 객체 생성 시 , 매개변수를 입력하지 않으면,
        #<input>태그에 아무런 값도 채워져있지 않은 상태로 생성됨
        obj = QuestionForm()
        '''
        form 객체를 기반으로 html 코드에 들어갈 <input>태그를 생성할 때, as_p(),as_table(),as_ul()함수를 사용 할 수있음,
        as_p():설명과 입력공간이 <P>태그로 묶여잇는 html코드로 변환
        as_table:설명과 입력공간이 한행<tr>에 묶여있는 html코드로 변환
        as_ul:설명과 입력공간이 리스트아이템에 묶여있는 html코드로 변환
        '''
        print('as_table() 결과' , obj.as_table())
        return render(request, 'vote/qregiste.html',{'form': obj.as_table()})
    #post 방식요청
        #사용자 입력 기반으로 폼클래스객체를 생성
    elif request.method == "POST":#POST요청 시 동봉된 사용자의 입력데이터
        obj = QuestionForm(request.POST)
        #폼클래스 객체를 연동된 모델클래스 객체를 변환
        #q : 사용자 입력으로 name변수에 값이 채워져있는 Question객체
        #폼객체.save() : 데이터베이스에 사용자 입력 기반의 새로운 객체가
        #저장되면서 새로운 객체를 반환하는 함수
        #사용자는 pub_date변수에 값을 입력할 수없기 때문에, 폼객체를 바로
        #데이터베이스에 저장 할수 없음(pub_date변수의 값이 없는 상태)
        #따라서 question객체로 변환 한뒤 , 비어있는 변수를 채워줘야함
        #>폼객체.save(commit=False)
        q = obj.save(commit=False)
        print('저장 전 id변수 값:',q.id)#데이터베이스에 저장되지않은 변수의 id값은 None이 뜸
        #값이 채워져있지않은 변수에 값을 채움
        q.pub_date = datetime.now()
        #데이터베이스에 새로만든 모델객체 저장
        q.save()
        print('저장이 된 다음의 id변수값:',q.id)
        #다른 url로 이동
        return HttpResponseRedirect('/vote/%s/'%q.id)
Beispiel #10
0
def qupdate(request, q_id):
    #수정할 대상의 객체 추출
    q = get_object_or_404(Question, id = q_id)
    #GET 방식 요청
    if request.method == 'GET':
        #수정할 객체를 기반으로 QuestionForm 객체 생성
        obj = QuestionForm(instance = q)
        #HTML 파일전달
        return render(request,'vote/qupdate.html',{'form':obj.as_p()})
    #POST 방식 요청
    if request.method == 'POST':
        #사용자 입력+수정할 객체를 기반으로 QuestionForm 객체를 생성
        obj = QuestionForm(request.POST, instance=q)
        #수정을 하는 객체를 바탕으로 QuestionForm 객체가 생성됬기 때문에 pub_date변수는 이미 값이 채워져있음
        #->바로 데이터베이스에 저장
        w = obj.save()
        print('수정할 객체 q의 id값 : ',q.id)
        print('폼객체가 준 객체의 id값 : ',w.id)
        #다른 URL에 전달
        return HttpResponseRedirect('/vote/%s/' % w.id)
Beispiel #11
0
def q_update(request, q_id):
    #수정할 question 객체 추출
    #get_object_or_404 : 모델 클래스의 객체들 중 id변수값을 이용해 객체 한개를 추출하는 함수.
    #   단, 해당 id값으로 된 객체가 없는 경우 사용자 요청에 잘못이 있는 것으로 판단하여 404에러 페이지를 전달함
    q = get_object_or_404(Question, id=q_id)

    #post인지 get인지 구분
    #get요청시 QestionForm객체 생성 - 수정할 객체를 바탕으로 생성
    if request.method == 'GET':
        #form 클래스 객체 생성 시 instance 매개변수에 연동된 객체를 전달하면, 해당 객체가 가진 값을 input태그에 채운상태로 폼 객체가 생성됨
        form = QuestionForm(instance=q)
        #as.table() : 각 입력 공간과 설명을 <tr>과 <td>로 묶어주는 함수
        result = form.as_table()

        return render(request, 'vote/q_update.html', {'result': result})

        #post요청시 QestionForm객체 생성 - 수정할 객체 + 사용자 입력
    elif request.method == 'POST':
        #수정대상 객체와 사용자 입력으로 폼 객체 생성 시, 기존 객체 정보를 사용자 입력으로 수정한 상태의 폼 객체가 생성됨
        form = QuestionForm(request.POST, instance=q)
        #사용자 입력으로 수정한 결과를 DB에 반영
        form.save()

        return HttpResponseRedirect(reverse('detail', args=(q_id, )))
Beispiel #12
0
def qupdate(request, q_id):
           #수정할 대상을 추출
           q=get_object_or_404(Question, id=q_id)
           #get-수정 대상의 정보를 바탕으로 입력양식 제공
           if request.method == "GET":
               #instance 매개변수: 데이터 베이스에 저장된 객체를 연동할 수 있는 변수. 연동한 모델폼 객체는 html코드로 변환시
               # 기본값이 객체 변수값으로 채워져있음.
               form = QuestionForm(instance = q)
               #동일한 폼객체를 사용하기 떄문에 동일한 html파일을 사용함.
               return render(request,'vote/qform.html',{'form' : form.as_table()})
           #post-사용자가 입력한 데이터로 수정
           elif request.method == "POST":
               #q 객체의 데이터를 사용자의 입력으로 덮어쓰기 한 폼객체 생성
               form = QuestionForm(request.POST, instance=q)
               #q변수에 저장된 값을 사용자 입력값으로 변경
               #Question 객체에 빈칸이 없으므로 바로 데이터 베이스에 저장.
               w = form.save()
               print('q변수의 id:',q.id)
               print('w변수의 id:',w.id)
               #detail 뷰 함수로 이동
               #매개변수에 들어갈 값으로 w변수의 id값을 전달
               return HttpResponseRedirect( reverse('vote:detail',args=(w.id,)))
Beispiel #13
0
def q_registe(request):
    #사용자 요청이 GET인지 POST인지 구분
    if request.method == "GET":
        #GET으로 요청했을때는 HTML로 제공
        #QuestionForm 객체를 생성
        #QuestionForm 객체를 생성할 때 입력값이 없는 형태로 생성하면
        #Input 태그에 아무런 값도 입력되있지 않은 상태의 객체가 생성됨
        form = QuestionForm()  #QuestionFrom 객체 하나 생성

        #객체를 바탕으로 HTML 코드로 변환

        #as_p(),as_table,as_ul함수 : Form 객체에 입력할 수 있는
        #공간들을 <input>으로 변환하면서 <p>,<tr>,<td><li<태그로
        #감싸누는 기능이 있는 함수

        rendered = form.as_p()
        print(rendered)
        #변환값을 HTML 파일에 전달
        return render(request, "vote/q_registe.html", {'rendered': rendered})

    elif request.method == "POST":
        #POST로 요청했을때는 다른 주소를 제공
        #QuestionForm 객체를 생성 - 사용자 입력 바탕으로 생성
        form = QuestionForm(request.POST)
        #사용자가 입력한 값 기반으로 데이터 생성?

        #QuestionForm 객체와 연동된 Question 객체를 생성 및 저장
        #form.save(commit=False)
        # : 연동된 모델클래스의 객체로 변환만 하는 함수
        # 데이터 베이스에 저장은 하지 않고 객체로 변경만?
        #form.save():연동된 모델클래스의 객체를 생성 및 데이터 베이스에 저장
        new_q = form.save()
        print(new_q)
        #새로운 객체가 형성되었다.
        #생성된 Question객체의 id값으로 detail뷰의 링크를 전달
        return HttpResponseRedirect(reverse('detail', args=(new_q.id, )))