URLconf

 - 요청받을 url에 따라 맵핑된 View를 호출

from django.urls import path, include

from . import views

urlpatterns = [
    path('admin/', views.adminView, name='admin'),
    path('notice/<int:notice_id>', views.noticeView, name='notice'),
    path('polls/', include('polls.urls')),
]

→ include를 사용하여 하위의 url파일로 연결시킬 수 있음

→ ex) notice/2 : url을 통해 넘어온 int 타입 2를 변수 notice_id에 넣어서 호출하는 함수 noticeView로 넘김

→ name 파라미터를 사용하여 별칭부여 가능 (별칭은 Template과 redirect() 함수 에서 사용)

from django.urls import path

from . import views

app_name = 'notice'

urlpatterns = [
    path('', views.noticeListView, name='notice_list'),
    path('<int:notice_id>/', views.noticeDetailView, name='notice_detail'),
    path('<int:notice_id>/update/', views.noticeUpdateView, name='notice_update'),
]

<a href="{% url 'notice:notice_update' notice.id %}">공지수정</a>

View

일반뷰

from django.shortcuts import render
from .django.contrib.auth.hashers import make_password


def register(request):
    if request.method == 'GET':
        return render(request, 'register.html')
    else
        username = request.POST.get('username')
        password = request.POST.get('password')
        re_password = request.POST.get('re_password')
        
        res_data = {}
        
        if password != re_password:
            res_data['error'] = '비밀번호가 다릅니다.'
        else:
            user=User(
                username=username,
                password=make_password(password)
                )
            user.save()
        
        return render(request, 'register.html', res_data)

→ request.POST[‘username’]보다는 request.POST.get(‘username’) 를 사용할것

  (∵ 전자는 key가 없을 때 에러가 발생하지만 후자는 None을 반환함)

지네릭뷰 (링크)

from django.shortcuts import render

Class noticeView(generic.View):

    def get(self, request, notice_id):
        notice = Notice.objects.get(notice_id)
        context = {'notice': notice}
    
    return render(request, 'polls/notice.html', context)

- 결과를 context에 담아서 명시한 Template로 전송함

1. render(request, 템플릿명, context) : 템플릿을 불러올 때 사용, context를 넘길 때 사용

2. redirect(URL) : URL로 이동할 때 사용

print(self.request.POST.get(키값, ‘’))

- 값이 넘어왔나 확인