Skip to content

feat: exams, accounts 앱의 url 구현 - #35

Open
h2ew0n wants to merge 1 commit into
devfrom
feature/#25-accounts,exams-url
Open

feat: exams, accounts 앱의 url 구현#35
h2ew0n wants to merge 1 commit into
devfrom
feature/#25-accounts,exams-url

Conversation

@h2ew0n

@h2ew0n h2ew0n commented Jul 31, 2026

Copy link
Copy Markdown
Collaborator

관련 이슈

#25

주요 변경 사항

  • URL 패턴 연결 (accounts/urls.py):
    path('signup/', views.signup_view, name='signup'),
    path('login/', views.login_view, name='login'),
    path('logout/', views.logout_view, name='logout'),

    • URL 패턴 연결 (exams/urls.py):
      path('periods/', views.period_list, name='period_list'),
      path('periods/create/', views.period_create, name='period_create'),
      path('periods/int:period_id/', views.period_detail, name='period_detail'),
      path('periods/int:period_id/subjects/create/', views.subject_create, name='subject_create'),
      path('periods/int:period_id/available-time/', views.available_time_update, name='available_time_update'),
      path('subjects/int:exam_id/materials/create/', views.material_create, name='material_create'),
      path('materials/int:material_id/', views.material_detail, name='material_detail'),
      path('subjects/int:exam_id/tasks/review/', views.task_review, name='task_review'),

      ── 표에 없어서 임시로 지음 (이주헌/신예원에게 공유 필요) ──

      path('periods/int:period_id/update/', views.period_update, name='period_update'),
      path('periods/int:period_id/delete/', views.period_delete, name='period_delete'),
      path('periods/int:period_id/subjects/int:exam_id/update/', views.subject_update, name='subject_update'),
      path('periods/int:period_id/subjects/int:exam_id/delete/', views.subject_delete, name='subject_delete'),
      path('materials/int:material_id/extract/', views.material_extract, name='material_extract'),
      path('materials/int:material_id/delete/', views.material_delete, name='material_delete'),
      path('subjects/int:exam_id/tasks/create/', views.study_task_create, name='task_create'),
      path('subjects/int:exam_id/tasks/confirm/', views.study_task_confirm, name='task_confirm'),

@wngjs8114

Copy link
Copy Markdown
Collaborator

사전에 공유한 URL/View 계약의 accounts/exams URL name이 모두 연결되어 있고, 각 View가 요구하는 period_id, exam_id, material_id 인자도 맞게 전달되는 것을 확인했습니다.

다만 아래 두 사항을 확인 부탁드립니다.

  1. PR 설명에 작성된 일부 URL 경로와 실제 구현 경로가 다릅니다.
  • 설명: periods/<period_id>/exams/create/
    구현: periods/<period_id>/subjects/create/

  • 설명: periods/<period_id>/available-times/
    구현: periods/<period_id>/available-time/

  • 설명: exams/<exam_id>/materials/create/
    구현: subjects/<exam_id>/materials/create/

  • 설명: exams/tasks/review/
    구현: subjects/<exam_id>/tasks/review/

실제 구현 경로를 최종안으로 사용할 예정이라면 PR 설명도 코드와 동일하게 수정 부탁드립니다.

  1. 현재 PR의 URL들은 PR #34에서 구현한 View 함수들에 의존하고 있으므로, PR #34를 먼저 병합한 뒤 이 브랜치에 최신 dev를 반영하고 python manage.py check 및 주요 URL reverse() 확인 후 병합하면 좋겠습니다.

@h2ew0n

h2ew0n commented Aug 1, 2026

Copy link
Copy Markdown
Collaborator Author

사전에 공유한 URL/View 계약의 accounts/exams URL name이 모두 연결되어 있고, 각 View가 요구하는 period_id, exam_id, material_id 인자도 맞게 전달되는 것을 확인했습니다.

다만 아래 두 사항을 확인 부탁드립니다.

  1. PR 설명에 작성된 일부 URL 경로와 실제 구현 경로가 다릅니다.
  • 설명: periods/<period_id>/exams/create/
    구현: periods/<period_id>/subjects/create/
  • 설명: periods/<period_id>/available-times/
    구현: periods/<period_id>/available-time/
  • 설명: exams/<exam_id>/materials/create/
    구현: subjects/<exam_id>/materials/create/
  • 설명: exams/tasks/review/
    구현: subjects/<exam_id>/tasks/review/

실제 구현 경로를 최종안으로 사용할 예정이라면 PR 설명도 코드와 동일하게 수정 부탁드립니다.

  1. 현재 PR의 URL들은 PR #34에서 구현한 View 함수들에 의존하고 있으므로, PR #34를 먼저 병합한 뒤 이 브랜치에 최신 dev를 반영하고 python manage.py check 및 주요 URL reverse() 확인 후 병합하면 좋겠습니다.

pr 메세지 수정했습니다

@wngjs8114

Copy link
Copy Markdown
Collaborator

#34 #35 통합 리뷰

  1. 로그인/회원가입 후 리다이렉트
    signup_view, login_view에서 이미 로그인된 경우 redirect('/')로 처리되어 있는데, 현재 프로젝트에 루트 URL(/)이 없어서 404가 발생합니다. redirect('exams:period_list') 등 실제 첫 화면으로 바꾸거나, LOGIN_REDIRECT_URL 설정으로 통일하면 좋을 것 같습니다.

  2. 로그인 next 파라미터 검증
    login_view에서 next_url = request.POST.get('next') or request.GET.get('next') or '/'를 검증 없이 바로 redirect()에 넣고 있어서, 외부 주소를 next로 넘기면 로그인 후 외부 사이트로 리다이렉트되는 오픈 리다이렉트 이슈가 있습니다. django.utils.http.url_has_allowed_host_and_scheme()으로 현재 호스트인지 검증 후 리다이렉트하는 게 안전할 것 같습니다.

  3. 직접 추가한 학습 작업 예상시간 0분
    StudyTaskForm에 예상시간 필드가 없고, StudyTask 모델 기본값도 min/max 둘 다 0이라, study_task_create에서 저장 시 time_estimator를 호출하지 않으면 사용자가 직접 추가한 작업이 스케줄러에서 0분짜리로 처리됩니다. 저장 전 시간 계산 서비스 호출을 추가해주시면 좋겠습니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants