inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

172만명의 커뮤니티!! 함께 토론해봐요.

restaurant_provider 부분에서 에러가 발생합니다.

미해결

[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!

final resp = await repository.paginate( paginationParams: paginationParams, ); 해당 부분에서 The argument type 'PaginationParams' can't be assigned to the parameter type 'PaginationParams? 가 발생하는데요 타입이 불일치 하다는 것 같은데 제가 repository의 paginate 코드랑 pagination_params 코드도 다시 확인해 보고 강사님 깃에 올라온 코드랑 비교도 해봤는데 왜 에러가 발생하는지 모르겠네요 paginationParams: paginationParams!, paginationParams: paginationParams ?? const PaginationParams(), 이런식으로 바꿔봐도 똑같습니다. 아래는 제 repository 및 pagination_params 코드입니다. import 'package:basic_ui/common/dio/dio.dart'; import 'package:basic_ui/common/model/pagination_params.dart'; import 'package:basic_ui/common/model/cursor_pagination_model.dart'; import 'package:basic_ui/restaurant/model/restaurant_detail_model.dart'; import 'package:basic_ui/restaurant/model/restaurant_model.dart'; import 'package:dio/dio.dart' hide Headers; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:retrofit/http.dart'; import '../../common/const/data.dart'; part 'restaurant_repository.g.dart'; final restaurantRepositoryProvider = Provider<RestaurantRepository>( (ref) { final dio = ref.watch(dioProvider); final repository = RestaurantRepository(dio, baseUrl: 'http://$ip/restaurant'); return repository; }, ); @RestApi() abstract class RestaurantRepository { factory RestaurantRepository(Dio dio, {String baseUrl}) = _RestaurantRepository; @GET('/') @Headers({ 'accessToken': 'true', }) Future<CursorPagination<RestaurantModel>> paginate({ @Queries() PaginationParams? paginationParams = const PaginationParams(), }); @GET('/{id}') @Headers({ 'accessToken': 'true', }) Future<RestaurantDetailModel> getRestaurantDetail({ @Path() required String id, }); } import 'package:json_annotation/json_annotation.dart'; part 'pagination_params.g.dart'; @JsonSerializable() class PaginationParams { final String? after; final int? count; const PaginationParams({ this.after, this.count, }); PaginationParams copyWith({ String? after, int? count, }) { return PaginationParams( after: after ?? this.after, count: count ?? this.count, ); } factory PaginationParams.fromJson(Map<String, dynamic> json) => _$PaginationParamsFromJson(json); Map<String, dynamic> toJson() => _$PaginationParamsToJson(this); }

  • flutter
  • 하이브리드-앱
종마루 댓글 1 좋아요 0 조회수 116

Riverpod을 하려고 하는데 질문이 있습니다!

해결됨

Flutter 앱 개발 실전

현재 강의에서 주로 사용하신 provider와 mvvm패턴을 활용해서 팀프로젝트와 개인프로젝트를 끝낸 상태입니다. 근데 자꾸만 할수록 riverpod에 대한 필요성을 느끼게 되어서 상태관리를 바꿔보려고 생각중인데 현재 강사님이 강의하신 내용으로도 충분할까요? 아니면 추가적인 강의나 학습이 필요할까요? 제 계획은 1. 강사님이 짧게 다루신 riverpod에 대한 내용을 복습하고 깃허브에 작성하신 riverpod으로 적용된 쇼핑몰 프로젝트를 보면서 클론코딩을 해볼 생각입니다. 이후에는 그걸 제 개인프로젝트에 적용할 생각이구요. 그걸로 충분할까요? 아니면 추가적인 학습 후에 1번과 2번을 하는 게 좋을까요?

  • flutter
김동혁 댓글 2 좋아요 1 조회수 156

24년 8월 기준 flutter_swiper import 관련

미해결

플러터와 장고로 1시간만에 퀴즈 앱/서버 만들기 [무작정 풀스택]

flutter_swiper_view: 로 변경되었음.

  • django
  • flutter
dev_dev_dev 댓글 2 좋아요 4 조회수 228

안녕하세요. 파트 소개 글을 보다가 브루트 포스와 구현 문제에 대해

해결됨

세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)

참고로, 단순 구현 문제와 브루트 포스 관련 문제만 잘 풀어도 어렵지 않은 코딩테스트는 합격을 노려볼만합니다. 해당 내용이 언급 되어 있던데, 이부분은 제 코테 전략은 아래와 같습니다. 백준 브루트포스 알고리즘별 문제모음 https://www.acmicpc.net/problemset?sort=ac_desc&algo=125 백준 시물레이션(구현) 알고리즘별 문제모음 https://www.acmicpc.net/problemset?sort=ac_desc&algo=141 알고리즘별 문제 모음으로 브루트 포스 : 100문제 시물레이션 : 100문제 각각 100문제 정도 풀어보고 해당 강의에 있는 문제들을 완전 이해와 학습 복습을 하는것인데 이정도면 스타트업 코딩테스트 정도 노려볼만한가요?

  • python
  • 코딩-테스트
  • 알고리즘
rhkdtjd_12 댓글 1 좋아요 0 조회수 185

24년 8월 기준,, 버튼 변경

미해결

플러터와 장고로 1시간만에 퀴즈 앱/서버 만들기 [무작정 풀스택]

24년에 퀴즈 앱 만들기 참여하신 분들께 도움이 되고자 남깁니다. 마지막 퀴즈 풀기 버튼 은 아래와 같이 변경되었습니다. child: ElevatedButton( style: ElevatedButton.styleFrom( foregroundColor: Colors.white, backgroundColor: Colors.deepPurple, ), onPressed: () {}, child: const Text( '지금 퀴즈 풀기', style: TextStyle(color: Colors.white), ), ),

  • flutter
dev_dev_dev 댓글 1 좋아요 1 조회수 269

문제 관련 추가질문입니다.

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

강의13분대 관련 질문입니다. public void paint() { System.out.print("A"); draw();} 여기서 draw();를 this draw(); 로 수정하게 되면 자식 draw가 아닌 부모 draw를 불러오나요? 강의 14분대 문제 질문입니다. A b = new B(1)을 통해 자식 클래스에서 public B(int i)를 불러왔으면 부모 클래스에서도 public A(int i)를 불러와야 하는것이 아닌가요? 이전 강의에서 파라미터가 있는 생성자 car(a,b)예제를 들고 설명을 해주실 때 그렇게 이해를 했는데 무슨차이인지 통 모르겠네요.. 17분대 specialDraw가 오류 나는 이유가 정확히 궁금해요 A b = new B(1); 을 통해 업캐스팅을 통해 B를 명시해줬기 때문에 에러가 나는걸까요? 뭔가 명확히 갈증이 해소되지 않는느낌이라 답답하네요...ㅠ

  • python
  • java
  • c
  • 정보처리기사
주서 댓글 1 좋아요 0 조회수 193

Dag Start_date 에 현재 시간 넣을때 사이드 이펙트가 있을까요?

미해결

Airflow 마스터 클래스

안녕하세요, 인강 수강후 현업에서 Airflow 를 통해서 Dag 을 수행하고 있는데요, 서비스 PM 등의 이유로 수시간(3~5시간) 정도 pause 를 진행하고 다시 unpause 를 하게 되는 경우가 있습니다. 이럴때 unpasue 를 클릭하게 된다면 비록 Dag 에 catchup = false 로 지정해 놓더라도, 가장 최근에 수행 되었어야 할 Dag Run 은 수행되게 되는데요 Ex ) schedule_interval = 10,20,30 1,2,3 * * * * Dag.catchup = False pause = 01:15 unpause = 03:25 수행되는 Dag run 의 data_interval_end = 03:20 그런데 여기서 3시 20 분 dag_run 을 수행시키지 않기 위해서 생각을 하다가, Dag 의 default_args 의 start_date 값을 datetime.now 로 주는것에 대해서 생각을 해봤는데요, 당장 간단하게 테스트를 했을때는 큰 문제가 없었는데, 혹시 해당 케이스가 문제가 되는 케이스가 있을까요? 그리고 start_date 를 now 로 하는것 말고도 다른 방안이 있다면 좋은 방안 부탁 드립니다 감사합니다!

  • python
  • 데이터-엔지니어링
  • airflow
qkswl6253 댓글 1 좋아요 0 조회수 148

강의 제목에는 리액트가 들어가있는데 리액트 내용은 좀 부실한거 같아요.

미해결

파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 (장고 4.2 기준)

강의 제목에는 리액트가 들어가있는데 리액트 내용은 좀 부실한거 같아요. 오히려 htmlx가 더 많아요~~~ 리액트로도 다양한 예제를 만들어주셨으면 합니다.

  • react
  • python
  • django
  • web-api
  • htmx
Hyeongwon Yun 댓글 1 좋아요 2 조회수 167

머린이 (k-fold) 질문

해결됨

[개정판] 파이썬 머신러닝 완벽 가이드

안녕하세요 선생님 머린이 질문드립니다 ㅠ k-fold 검증하는거에 대해 궁금한게 있습니다 X_train, X_val, y_train, y_test = train_test_split(x,y,test_size= 0.3) 으로 햇을 때 만약 100개 데이터가 있으면 30개 데이터를 가지고 질문1) fit -> x_train, y_train : 30개 데이터를 가지고 훈련한다. ) 70개 데이터에 대해 pred : x_val 후 -> accuracy (y_val, pred) 맞춰본다 (모의고사를 푼다) -> 이제 fit한 데이터를 가지고 실제 수능을 푼다 (real test data) 가 맞을까요 ?? 질문2) 이게 맞다면 k-폴드 교차검증은 (k=5일떄) fit 활동 -> 30개 데이터 셋 fit을 5번 수행 실시 후 70개의 pred : x_val 활동을 한다 가 맞을까요 ? '^',,

  • python
  • 머신러닝
  • 통계
kyb1053 댓글 1 좋아요 0 조회수 114

머린이(머신러닝 어린이) 질문

해결됨

[개정판] 파이썬 머신러닝 완벽 가이드

안녕하세요 선생님 ㅎ ㅠ 강의중 2.4 model selection 모듈소개에서 from sklearn.datasets import load_iris 내장된 데이터셋을 불러온 후 head()랑 shape을 바로 파악하고싶은데 예를들어 df = pd.read _csv("~~.csv") df.head() 하면 x1, x2 , x3, target (물론 본인이 x,y 파악) 데이터 셋을 바로 파악할 수 있는데 내장 데이터는 iris_df = pd.DataFrame(iris_ data.data , columns=iris_data.feature_names) iris_df['target']=iris_ data.target 이런 작업이 필요한걸까요 ㅠㅠ?..

  • python
  • 머신러닝
  • 통계
kyb1053 댓글 1 좋아요 0 조회수 111

Expanded 하니 에러가 나는데 이유를 모르겠습니다.

해결됨

Flutter 앱 개발 기초

사진에 빨간 박스 부분 Expanded 하는데 정답 코드와 비슷한데 무슨 이유인지 에러가 나는데 잘 모르겠네요. Expanded 적용 전 코드 Row( crossAxisAlignment: CrossAxisAlignment.end, children: [ Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ /// 11 ★ until next Reward Text( "11 ★ until next Reward", style: TextStyle( color: starbucksAccentColor, fontWeight: FontWeight.bold, fontSize: 16, ), ), /// 진행율 ], ), ... Expanded 적용 후 코드(일부분) Row( crossAxisAlignment: CrossAxisAlignment.end, children: [ Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ /// 11 ★ until next Reward Text( "11 ★ until next Reward", style: TextStyle( color: starbucksAccentColor, fontWeight: FontWeight.bold, fontSize: 16, ), ), /// 진행율 ], ), ), ... 전체코드 import 'package:flutter/material.dart'; /// Starbucks 메인 색상 Color starbucksPrimaryColor = Color.fromARGB(255, 83, 184, 138); /// Starbucs 포인트 색상 Color starbucksAccentColor = Color.fromARGB(255, 199, 176, 121); class StarbucksHome extends StatelessWidget { const StarbucksHome({super.key}); @override Widget build(BuildContext context) { /// 배경 이미지 URL final String backImg = "https://i.ibb.co/2Pz33q7/2021-12-16-12-21-42-cleanup.png"; /// Frequency 이미지 URL final String frequencyImg = "https://i.ibb.co/QcVn97y/2021-12-16-1-33-11.png"; /// 추천 메뉴 final List<Map<String, String>> recommendMenu = const [ { "name": "돌체쿠키라떼", "imgUrl": "https://i.ibb.co/SwGPpzR/9200000003687-20211118142543832.jpg", }, { "name": "아이스 홀리데이 돌체 쿠키 라떼", "imgUrl": "https://i.ibb.co/JHVXZ72/9200000003690-20211118142702357.jpg", }, { "name": "스노우 민트 초콜릿", "imgUrl": "https://i.ibb.co/M91G17c/9200000003693-20211118142933650.jpg", }, { "name": "아이스 스노우 민트 초콜릿", "imgUrl": "https://i.ibb.co/jyZK4C9/9200000003696-20211118143125337.jpg", }, { "name": "스노우 민트 초콜릿 블렌디드", "imgUrl": "https://i.ibb.co/DKkV0rw/9200000003699-20211118143249044.jpg", }, ]; /// 크리스마스 이벤트 이미지 URL final String eventImg = "https://i.ibb.co/Fb0q43T/IMG-F9-BA5-CBCB476-1.jpg"; return Scaffold( body: CustomScrollView( slivers: [ /// Tip: 스크롤시 배경이 사라지게 할려면 SliverAppBar를 사용 SliverAppBar( // automaticallyImplyLeading: false, expandedHeight: 252, // 최대확장되었을때 높이 pinned: true, // 스크롤시 bottom 영역을 화면 상단에 고정할지 여부 snap: false, // 스크롤 중간에 멈출때 자동으로 AppBar를 펼쳐서 배경을 모두 보여줄지 여부 floating: true, // ?? backgroundColor: Colors.white, /// 스크롤시 사라지는 영역 flexibleSpace: FlexibleSpaceBar( collapseMode: CollapseMode.pin, background: Stack( children: [ /// 배경이미지 Positioned.fill( bottom: 60, child: Image.network( backImg, fit: BoxFit.cover, ), ), /// 배경 위 위젯 Positioned( top: 24, left: 24, bottom: 60, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( "한 해의 마무리,\n수고 많았어요💖", style: TextStyle(fontSize: 28, fontWeight: FontWeight.bold), ), Row( crossAxisAlignment: CrossAxisAlignment.end, children: [ Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ /// 11 ★ until next Reward Text( "11 ★ until next Reward", style: TextStyle( color: starbucksAccentColor, fontWeight: FontWeight.bold, fontSize: 16, ), ), /// 진행율 ], ), /// 1/12 ★ RichText( text: TextSpan( children: [ TextSpan( text: '1', style: TextStyle( color: Colors.black, fontSize: 42, fontWeight: FontWeight.bold, ), ), TextSpan( text: ' / ', style: TextStyle( color: Colors.grey, fontSize: 28, fontWeight: FontWeight.bold, ), ), TextSpan( text: '12 ★', style: TextStyle( color: starbucksAccentColor, fontSize: 28, fontWeight: FontWeight.bold, ), ), ], ), ), ], ) ], ), ), ], ), ), /// 스크롤시 남아있는 영역 bottom: PreferredSize( preferredSize: Size.fromHeight(52), // 영역 높이 child: Container( height: 52, color: Colors.white, padding: EdgeInsets.only(left: 24, right: 12), child: Row( children: [ /// What's New GestureDetector( onTap: () {}, child: Row( children: [ Icon( Icons.mail_outline, color: Colors.grey, ), SizedBox(width: 8), Text( "What's New", style: TextStyle(fontSize: 18), ), ], ), ), SizedBox(width: 32), /// Coupon GestureDetector( onTap: () {}, child: Row( children: [ Icon( Icons.confirmation_num_outlined, color: Colors.grey, ), SizedBox(width: 8), Text( "Coupon", style: TextStyle(fontSize: 18), ), ], ), ), Spacer(), /// Alarm IconButton( onPressed: () {}, icon: Badge( backgroundColor: starbucksPrimaryColor, smallSize: 12, child: Icon( Icons.notifications_outlined, size: 32, color: Colors.grey, ), ), ) ], ), ), ), ), ], ), ); } }

  • flutter
padohy 댓글 1 좋아요 2 조회수 159

서버 요청 거절 시 해결하는 방법(헤더)관련

미해결

[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)

안녕하세요. 1:44 부분 따라 해보니 에러메세지는 동일하나 , 그 위에 프린트되는 soup 내용은 뜨질않습니다. 우선 에러메세지는 동일해서 이어서 따라해보니 (헤더 설정 등) 런 돌리니 런 완료 표시는 뜨는데 프린트 되는 내용이 없습니다;; 지금까지 잘 따라왔는데 여기서 막히네요.. .

  • python
  • 웹-크롤링
경철 댓글 1 좋아요 0 조회수 168

GestureDetector 부분 onTap 함수 VoidCallBack 함수로 감싸는 이유?

미해결

[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!

아래의 코드중에 온탭 생성자 부분에서 바로 onTap(e)를 사용하지 않고 보이드콜백 함수로 감싸줘야하는 이유가 child: GestureDetector( onTap: () { ontap(e); }, 해당 부분에서 onTap 메소드? 함수가 받는 형식은 제스처콜백 타입으로 typedef GestureTapCallback = void Function(); 이지만 저희가 생성한 새로운 자료형은 void Function(String selectedColorName); 형태이기때문에 완전한 형식을 지켜주는 (){} 형태가 최 상단에 위치하고 그 아래에 저희가 사용하고자 하는 형태로 만들어진 함수를 다시 불러와줌으로서 논리적으로 작동하게 만들어주는게 맞나요? 생성한 onTap함수만 넣어서 에러를 읽어봤는데 제대로 이해가 안되서 질문 남깁니다.

  • flutter
  • 클론코딩
SungWoo Jo 댓글 1 좋아요 0 조회수 187

controller 질문드립니다

미해결

[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!

안녕하세요 코팩님 전자액자 복습 중에 문득 헷갈리는게 생겨서 질문드립니다. class _HomeScreenState extends State<HomeScreen> { Timer? timer; PageController controller = PageController(); 여기에서 controller 부분이 잘 이해가 안 가는데요, controller를 사용하려면 위와 같이 PageController controller = PageController(); 와 같은 형식으로 정의를 해야하는 건가요? 웹뷰 프로젝트에서도 controller 정의하실때 WebviewController controller = WebviewController()..~~ 식으로 정의하셨는데, 위와 같은 형식으로 정의를 하는 것인지와 또 controller 바로 앞 타입의 정체와 우항의 정체는 정확히 무엇인지 궁금합니다. 좌항 controller 앞의 PageController는 무엇의 타입이고 (정체가 무엇인지), 우항도 정체가 무엇인지, 또 controller를 사용하고자 하면 저런 형식으로 정의해야하는 것인지 궁금합니다!

  • flutter
  • 클론코딩
vvpharos 댓글 1 좋아요 0 조회수 164

5단계 강의 코드관련(Streamlit st.data_editor() & st.column_config)

미해결

Python Streamlit을 활용한 대시보드 만들기 (feat. 빅데이터 분석기사 실기 준비)

선생님 안녕하세요~ 좋은 강의 제공해주셔서 감사드립니다. Github에 해당 강의 코드가 없는것 같아 확인차 문의드립니다. 감사합니다.

  • python
  • pandas
  • 웹-크롤링
  • scikit-learn
  • streamlit
kms 댓글 2 좋아요 0 조회수 243

[파이썬 Print 사용법 (1-4) - New 2023] Escape 코드

미해결

프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)

이전 강의에 Escape 코드에 관해 설명하였다고 언급하시고 넘어가셨는데, 다루어지지 않은 내용인 것 같습니다. 이 내용은 어디서 찾을 수 있는 걸까요 ?

  • python
유진이 Jinnie Yoo 댓글 1 좋아요 0 조회수 129

머신러닝 질문

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

안녕하세요 선생님, 여쭤볼께 있어 글남깁니다 ~! 만약 2회차 회귀 문제라 가정하면 만약 데이터프레임이 x1 x2 x3 ~~~~ y 값이 있을 때, 만약 target으로 하는 y가 있다 ! 라고 했을 때 거기에 대한 x1, x2, x3가 ~~범위에 들어와야 target하는 y값에 가깝다 ! 라는 코딩도 있나요 ? 어떻게 보면 회귀분석인거같은데. .ㅠ 배운건 x1 x2 x3가 있을떄 y가 나오는거까지 밖에 안배워서 궁금하네용

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
kyb1053 댓글 1 좋아요 0 조회수 100

2024년 2회 17번 재귀함수

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

재귀 함수로 계속 돌면 Char c = a 만 남고 if(idx <0) return""; 으로 빠져나오는거 아닌가요?ㅠ idx : 0, c: a,seen[a]:false idx : 1, c: b,seen[b]:false 어떻게 나오는지 모르겠습니다.

  • python
  • java
  • c
  • 정보처리기사
2828won 댓글 1 좋아요 0 조회수 145

로그아웃 시 메서드 거절이 발생합니다.

미해결

파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 (장고 4.2 기준)

auth LoginView/LogoutView에 success_url_allowed_hosts 설정 추가하여, 로그인/로그아웃 후에 지정 호스트로의 이동 허용 현재 로그인/로그아웃후 지정 호스트로 이동을 허용하는 부분을 실습하고 있는데 막히는부분이 있어서 질문 드립니다. 이부분 코드를 붙여넣고 실행하였더니 로그아웃 부분에서 아래와 같은 에러가 발생하였습니다. (프로필 페이지로 이동은 잘 됩니다.) 찾아보니 GET 메서드가 거절된 것같은데, 이전 강의에서 장고에서 과거에는 GET으로 받았으나, 이제는 POST 요청만 허용한다는 내용을 들은적이 있었던것같은데, 그것과 관련된 것인지 궁금합니다. 다른 분들은 잘되셔서 넘어가셨을텐데, 저가 잘못된것 같긴한데 혹시나해서 여쭈어봅니다. 아래는 로그아웃 구현된 부분입니다.

  • react
  • python
  • django
  • web-api
  • htmx
백종성 댓글 2 좋아요 0 조회수 147

11-15) 프로필 수정에서 이미지 저장 시 문제

해결됨

파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 (장고 4.2 기준)

질문을 온전히 이해할 수 있도록, 모든 맥락을 전달해주세요. 질문은 질문자가 번거로워야 보다 좋은 답변을 얻으실 수 있습니다. 시행착오를 알려주시면 곧바로 원하는 문제에 집중할 수 있습니다. 오류 메시지는 일부만 알려주시기보다 전체 오류 메시지를 캡처해서 주시면, 오류 파악에 도움이 됩니다. 당신의 파이썬/장고 페이스메이커가 되겠습니다. ;-) 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 11-15 강의에서 구현한 프로필 수정 폼에서 이미지를 올린 경우, 다시 프로필 수정 페이지에 들어가면 정상적으로 이전에 등록된 이미지가 현재 란에 보여집니다. 이렇게 구현된 모델은 문제가 몇 가지 있는데요. 수정하지 않고 저장 을 누를 경우 이전 강의에서 교육하신 내용처럼 접미사가 계속 바뀌어가면서 같은 내용의 파일이 spamming 되는 문제가 발생합니다. 우리가 만약 프로필에 다른 항목이 추가된다면, 다른 항목만 수정하지 않고 나가는 유저가 있을텐데 해당 문제를 해결하려면 어떻게 해야할까요? 수정 혹은 취소 체크 박스를 선택하여 삭제를 할 경우 여전히 경로 안에 파일이 남아 있습니다. signal을 이용하면 될 것 같은데, 하기와 같은 방법을 생각해 볼 수 있을까요? @receiver(pre_save, sender=Profile) def edit_delete_on_profile(instance=Profile, **kwargs): instance.avatar.delete(save=False) 수업 내용과는 상관없지만, 기본 제공되는 이미지 업로드 양식이 어색합니다. 특히 취소 체크 박스를 체크하여 제거하는 방식은 너무 어색한데요. 더 좋은게 없을까요? 예를들어 아래는 네이버 '치지직' 에서 프로필 수정 양식입니다.

  • react
  • python
  • django
  • web-api
  • htmx
pplkjh2 댓글 3 좋아요 0 조회수 242

인기 태그

인프런 TOP Writers

주간 인기글