묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
app serivce에서 CSRF 검증에 실패했습니다. 가 뜹니다
장고 4.0때부터 이상에서는 CSRF_TRUSTED_ORIGINS를 수정해줘야한다고 들었습니다. 그런데 수정하고서도 여전히 csrf 토큰 오류가 발생하네요.
-
해결됨파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
Pickle load
지금은 pickle에서 장고 모델 지원되는거 같습니다!! json은 여전히 Not Serializable 에러 뜹니다신기해서 공유드립니다
-
해결됨파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
12:42분에서 403 Forbidden가 뜹니다!
윈도우11 home을 사용하고있고 C:\html 경로에서 docker run 명렁어를 입력하였습니다.혹시 틀린 부분이 있을까요? 위 방법으로 해결은 되었습니다. 다만 무슨차이가 있는것이고 왜 문제가 발생한지 모르겠어요 그리고 또하나 질문이 있습니다. docker run으로 실행하였을때 위에 이미지 처럼 뜨게되는데 이 상태에서 컨트롤 + c / 컨트롤 + d를 입력해도 명령이 종료가 되지않는데 어떻게 종료할 수 있을까요?
-
해결됨파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
antd 디자인에서 Comment import가 안됩니다.
antd 디자인 홈페이지에서도 똑같이 from 'antd'에서 가져오는데 최신버전이라 안먹히는것인지 Comment가 안불러와지네요. 자동완성도 지원이 안되고요
-
미해결장고 설계철학으로 시작하는 파이썬 장고 입문
장고 서버 실행 오류 질문남깁니다.
안녕하세요'프로젝트 생성 및 파이참에서 이쁘게 개발하기' 강좌 11:50 경에서파이참 Configuration 설정 후 디버그 메뉴를 클릭해서 장고 서버를 띄우는 부분이 있는데요제 환경에서 따라해보니 아래 에러가 뜹니다.인코딩을 Settings > File Encodings > Project Encoding을 UTF-8로도 바꿔봤는데 동일한데 뭐가 잘못된걸까요?Fatal Python error: init_stdio_encoding: failed to get the Python codec name of the stdio encodingPython runtime state: core initializedLookupError: unknown encoding: x-windows-949Current thread 0x000047e0 (most recent call first): <no Python frame>
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
DetailVeiw 및 ListView.as_view() 파라미터 설정에 대한 질문
DetailVIew 및 ListView 에서as_view() 할때 model, template_name_field, template_name 등등 상속으로 받은 클래스 변수를 초기화 해줍니다.여기서 질문은제가 클래스를 만들어 위 내용에 동일한 클래스 변수 생성하여 다중 상속하고 classmethod를 선언하여 메소드에 상속 된 변수를 선언할려고 하는데 코어에 as_view() 처럼 무엇이 상속되었는지 표시가 나오지 않습니다. 해당 내용에 대한 해결 방법에 대해 질문드립니다.아래 내용은 스크린샷 입니다.코어에서 as_view()제가 만든 함수
-
미해결Vue.js - Django 연동 웹 프로그래밍
bootstrap 팝업창 만들기 단원에서 질문있습니다.
게시판에서 삭제 버튼이 눌리지 않아data-toggle , data-target은data-bs-toggle, data-bs-target 으로 수정하여 버튼 눌러서 모달창 팝업까지는 해결하였습니다.하지만 모달창에body-text는 todo내용이 아닌 body-text 문자 그대로 보여주고 delete 버튼을 눌러도 내용이 삭제 되지않습니다.버젼이 틀려서 스크립트에서 id,name,todo를 받아오지 못하는거 같은대 아무리 찾아봐도 해결법을 모르겠습니다.
-
해결됨장고 설계철학으로 시작하는 파이썬 장고 입문
<p> 태그 (장고 AOP 실습 강의)
안녕하세요,현재 장고 AOP 실습 강의를 듣고 있으며로그인 여부를 보여줄 수 있는 코드를 따라하고 있는데캡처본 해당 부분에 <p> 태그 작성 이유에 대해 설명을 조금 더 듣고 싶습니다!<p> </p> 태그 없이도, logged by {{ user }}를 적으면 화면에 잘 나오는데<p> </p> 태그 내에 해당 코드를 적는 이유가 궁금합니다. 화면 내에 좀 더 정갈하게 보여지기 위함일까요? 늘 친절한 답변 감사합니다 ^^
-
해결됨장고 설계철학으로 시작하는 파이썬 장고 입문
ModuleNotFoundError: No module named 'app.templates.app.forms'
안녕하세요, 강사님 :-)수업을 듣다 오류가 발생하여 질문을 남깁니다. 도움 부탁드리겠습니다 ^^ python manage.py runserver 후 오류 화면<app/views.py)ModuleNotFoundError: No module named 'app.templates.app.forms'에러 확인 app > templates > app > forms.py 파일 확인<forms.py> => PostForm 구현된 것 확인 제가 해결하려고 한 방법은1) 오류 코드 확인(ModuleNotFoundError)2) app > views.py 파일 내 코드 확인 해보니, from app.templates.app.forms import PostForm에 에러 줄 확인3) forms.py 파일 내에 PostForm 구현 됐는지 확인 이 과정으로 오류를 해결하려고 했는데 PostForm 코드도 있는데 왜 ModuleNotFoundError 에러가 떴는지, forms.py 7번째 줄에(from app.templates.app.forms import PostForm) 빨간 줄이 쳐졌는지 잘 모르겠습니다... 오류 해결 접근 법이 잘못된 것인지 제가 수업을 듣다가 놓친 것이 있는지 강사님의 피드백에 필요합니다. 늘 잘 보고 있습니다. 감사합니다 ;-)
-
해결됨파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
CommandError: You must set settings.ALLOWED_HOSTS if DEBUG is False. 오류가 뜹니다.
강의내용대로 쭉 따라가면서askcomapny경로에서 settings 폴더를생성cd askcompany로 경로 이동후 git add .를 한뒤 git mv settings.py settings/common.py 로 파일이동그 상태로 runserver를 해봤더니 CommandError: You must set settings.ALLOWED_HOSTS if DEBUG is False. 오류가 뜸원래 경로에 settings.py파일을 다시 만들어 보고 runserver를 해봤더니 오류가 사라짐옮기는 과정에서 문제가 있는건지는 모르겠네요 DEBUG = True 이고 ALLOWED_HOSTS = ['*'] 설정까지도 해봤는데 왜 저런 오류가 뜨는걸까요?
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
context에 있는 데이터가 html로 넘어가지 않습니다.
지금 context라는 변수를 첫 번째 if문에 한번 두 번째 if문에 한번 총 두 번 선언합니다.각 if문 안에 있는 동작이 끝나는 순간 함수가 끝나기 때문에 서로 영향을 주지 않습니다.그런데, 첫 번째 context에 있는 변수들은 html 페이지에 잘 뜨는데 두 번째 context에 있는 변수들이 html로 넘어가지 않습니다.예를 들어, 두 번째 context에 있는 mape_val이 html에서 출력 되지 않습니다.데코레이터 코드는 참고용으로 넣어두었습니다. views.py 부터 봐주시면 감사하겠습니다. <views.py> @navsDecorator @viewDecorator def csv_forecast(req, context): username = req.user if req.method == 'POST' and req.FILES.get('csvfile'): uploaded_file = req.FILES.get('csvfile') p_data = pd.read_csv(uploaded_file) p_data.reset_index(drop=True, inplace=True) columns_list = list(p_data.columns) columns_list = [column.lower() for column in columns_list] p_data.columns = columns_list # 디렉토리 없는 경우 생성해주는 python 내장 모듈 os.makedirs('media/csv', exist_ok=True) p_data.to_csv(f'media/csv/{username}.csv', index=False) start_date = p_data.loc[0, 'date'] len_date = int(len(p_data)*0.8) end_date = p_data.loc[len_date, 'date'] datas = [] for i in range(1, len(columns_list)): datas.append(columns_list[i]) MODEL_LIST = ['ARIMA', 'EMA5', 'LSTM'] context = {'datas' : datas, 'd' : p_data, 'columns_list' : columns_list, 'MODEL_LIST' : MODEL_LIST, 'start_date' : start_date, 'end_date' : end_date} # req.POST.get('')과 req.POST['']의 차이는 get을 적었을때는 키값이 존재하지 않는 경우 None값을 반환함 if req.POST.get('sendModel') and req.POST.get('sendPdata') and req.POST.get('sendRdata'): # js에서 ajax로 보낸 dict의 value값 send_pdata = req.POST.get('sendPdata') send_rdata = req.POST.get('sendRdata') send_model = req.POST.get('sendModel') cleaned_pdata = re.split(r'[\[\],"]', send_pdata) cleaned_rdata = re.split(r'[\[\],"]', send_rdata) cleaned_model = re.split(r'[\[\],"]', send_model) selected_pdata = [i for i in cleaned_pdata if len(i) >= 1] selected_rdata = [i for i in cleaned_rdata if len(i) >= 1] selected_model = [i for i in cleaned_model if len(i) >= 1] csv_data = pd.read_csv(f'media/csv/{username}.csv') mape_val, y_pred, y_test, test_date = model_main(csv_data, selected_pdata,selected_rdata, selected_model) print(mape_val) # print(type(y_pred)) # print(type(y_test)) # print(type(test_date)) fs = FileSystemStorage(location=f'media/csv/') fs.delete(f'{username}.csv') context = {'mape_val': mape_val,'y_pred' : y_pred, 'y_test' : y_test, 'test_date' : test_date } return req, context<csv_forecast.html> <body> {% include "nav.html" %} <div class="container"> <!-- css 깨지고 검색안되는거 forecast_scripts 문제였음 / 그 외 materialAutoComplete 추가 / views.py name get으로 가져오는 것 수정 --> <div class="card"> <div class="card-body"> {% if datas %} <h3>데이터와 모델 선택 후 하단에 저장버튼을 클릭해주세요.</h3> {% endif %} <br> <div class="sub-section" style="overflow: hidden;"> <form method="post" enctype="multipart/form-data"> <!-- form에서 받는 모든 정보를 모두 인코딩하지는 않는다는 뜻으로 이 부분을 설정하지 않으면 form에서 filename 정도만 받아오게 된다. 이 방식은 파일이나 이미지를 서버로 전송할 때 주로 사용한다. --> {% csrf_token %} <input type="file" name="csvfile" accept=".csv"> {% if datas %} <button type="submit" class="btn btn-primary">CSV 파일 업로드 완료</button> {% else %} <button type="submit" class="btn btn-secondary">CSV 파일 업로드 </button> {% endif %} </form> <br> <h3>학습구간 : {{start_date}} ~ {{end_date}}</h3> </div> </div> </div> <div class="col"> <h3>데이터 선택</h3> </div> <div class="card" > <div style="height: 400px; overflow: overlay"> <div class="card-body"> <!-- <button type="button" class="btn btn-primary" id="select_data">선택 데이터 저장</button> --> <div class="sub-section" style="overflow: hidden;"> <div class="sub-section01"> <table class="table table-hover table-centered table-nowrap" id="table_data"> <thead class="thead-dark"> <tr> <th></th> <th>예측 데이터</th> <th>근거 데이터</th> <th>딜레이</th> </tr> </thead> <tbody> {% for data in datas %} <tr> <td>{{data}}</td> <td><input type="radio" name ="pdata_checkbox"></td> <td><input type="checkbox" name ="rdata_checkbox"></td> <td>1</td> </tr> {% endfor %} </tbody> </table> </div> <div id="checked_data"></div> </div> </div> </div> </div> <div class="col"> <h3>모델 선택</h3> </div> <div class="card" > <div class="card-body"> <div class="sub-section" style="overflow: hidden;"> <div class="sub-section01"> <table class="table table-hover table-centered table-nowrap" id="table_model"> <thead class="thead-dark"> <tr> <th>선택</th> <th>예측 모델</th> </tr> </thead> <tbody> {% for model in MODEL_LIST %} <tr> <td><input type="radio" name ="model_checkbox"></td> <td>{{model}}</td> </tr> {% endfor %} </tbody> </table> </div> {% if datas %} <button type="button" class="btn btn-primary" id="select_model">선택 데이터와 모델 저장</button> {% endif %} <div id="checked_model"></div> </div> </div> </div> <div class="col"> <h3>예측 결과</h3> </div> <div class="card"> <div class="card-body"> <div class="sub-section" style="overflow: hidden;"> <h3>{{mape_val}}</h3> </div> </div> </div> </div> <decorator.py> def viewDecorator(func): def wrapper(*args, **kwargs): req = args[0] context = {key: val for key, val in req.GET.dict().items()} kwargs['context'] = context req, context = func(*args, **kwargs) return TemplateResponse(req, f'{func.__name__}.html', context=context) return wrapper def navsDecorator(function): @functools.wraps(function) def wrapper(*args, **kwargs): template = function(*args, **kwargs) try: navs = [ # getNav('main', '퀀트평가'), # getNav('getGraphByCode', '시즈널리티'), getNav('csv_forecast', '원자재 예측'), # getNav('house', '부동산 예측'), # getNav('similarData', '유사차트'), ] template.context_data['navs'] = navs return template.render() except Exception as e: print(e) return template return wrapper
-
미해결우리를 위한 프로그래밍 : 파이썬 중급 (Inflearn Original)
자막 지원 문의 드립니다.
안녕하세요 혹 파이썬 초급 수업처럼 자막 지원이 될지요? 매우 도움이 되어서 문의 드립니다
-
해결됨파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
강의 학습 관련 질문
안녕하세요! 장고 학습 관련하여 몇 가지 여쭤볼라고 합니다. 현재 장고를 개념부터 강의를 따라서 학습하고 있습니다. 뭔가 아직 막막하고 진도가 빠르게 진행되지 않아 마음이 성급한 마음이 있습니다. 그래서 불안감이 생겨서 그런지 부트캠프를 알아보았는데, https://learningspoons.com/course/detail/django-backend/ python django aws 기술 셋을 사용하는 부트캠프입니다. 들어가서 상단으로 올리면 커리큘럼을 볼 수 있습니다. 부트캠프로 들은 후, 나중에 이진석님 강의를 듣는 게 나은지 아니면 그냥 묵묵히 계속 강의를 듣는 게 나을지 고민이 됩니다. 만약 이진석님이 보실 때 커리큘럼이 만드신 강의가 더 낫다면 묵묵히 강의를 들으면서 학습해볼려고 합니다. 제 수준이 낮아서 뭐가 좋은지 잘 몰라서 여쭤봅니다.
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
404에러 예외처리 하는 도중 에러가납니다
Exception in thread django-main-thread: Traceback (most recent call last): File "C:\Users\lee\.conda\envs\askcompany\lib\threading.py", line 973, in _bootstrap_inner self.run() File "C:\Users\lee\.conda\envs\askcompany\lib\threading.py", line 910, in run self._target(*self._args, **self._kwargs) File "C:\Users\lee\.conda\envs\askcompany\lib\site-packages\django\utils\autoreload.py", line 53, in wrapper fn(*args, **kwargs) File "C:\Users\lee\.conda\envs\askcompany\lib\site-packages\django\core\management\commands\runserver.py", line 117, in inner_run self.check(display_num_errors=True) File "C:\Users\lee\.conda\envs\askcompany\lib\site-packages\django\core\management\base.py", line 392, in check all_issues = self._run_checks( File "C:\Users\lee\.conda\envs\askcompany\lib\site-packages\django\core\management\base.py", line 382, in _run_checks return checks.run_checks(**kwargs) File "C:\Users\lee\.conda\envs\askcompany\lib\site-packages\django\core\checks\registry.py", line 72, in run_checks new_errors = check(app_configs=app_configs) File "C:\Users\lee\.conda\envs\askcompany\lib\site-packages\django\core\checks\urls.py", line 13, in check_url_config return check_resolver(resolver) File "C:\Users\lee\.conda\envs\askcompany\lib\site-packages\django\core\checks\urls.py", line 23, in check_resolver return check_method() File "C:\Users\lee\.conda\envs\askcompany\lib\site-packages\django\urls\resolvers.py", line 407, in check for pattern in self.url_patterns: File "C:\Users\lee\.conda\envs\askcompany\lib\site-packages\django\utils\functional.py", line 48, in __get__ res = instance.__dict__[self.name] = self.func(instance) File "C:\Users\lee\.conda\envs\askcompany\lib\site-packages\django\urls\resolvers.py", line 588, in url_patterns patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module) File "C:\Users\lee\.conda\envs\askcompany\lib\site-packages\django\utils\functional.py", line 48, in __get__ res = instance.__dict__[self.name] = self.func(instance) File "C:\Users\lee\.conda\envs\askcompany\lib\site-packages\django\urls\resolvers.py", line 581, in urlconf_module return import_module(self.urlconf_name) File "C:\Users\lee\.conda\envs\askcompany\lib\importlib\__init__.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1030, in _gcd_import File "<frozen importlib._bootstrap>", line 1007, in _find_and_load File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 680, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 850, in exec_module File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed File "C:\Dev\askcompany\askcompany\urls.py", line 41, in <module> path('__debug__/', include('debug_toolbar.urls')), File "C:\Users\lee\.conda\envs\askcompany\lib\site-packages\django\urls\conf.py", line 34, in include urlconf_module = import_module(urlconf_module) File "C:\Users\lee\.conda\envs\askcompany\lib\importlib\__init__.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1030, in _gcd_import File "<frozen importlib._bootstrap>", line 1007, in _find_and_load File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 680, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 850, in exec_module File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed File "C:\Users\lee\.conda\envs\askcompany\lib\site-packages\debug_toolbar\urls.py", line 5, in <module> urlpatterns = DebugToolbar.get_urls() File "C:\Users\lee\.conda\envs\askcompany\lib\site-packages\debug_toolbar\toolbar.py", line 145, in get_urls for panel_class in cls.get_panel_classes(): File "C:\Users\lee\.conda\envs\askcompany\lib\site-packages\debug_toolbar\toolbar.py", line 126, in get_panel_classes panel_classes = [ File "C:\Users\lee\.conda\envs\askcompany\lib\site-packages\debug_toolbar\toolbar.py", line 127, in <listcomp> import_string(panel_path) for panel_path in dt_settings.get_panels() File "C:\Users\lee\.conda\envs\askcompany\lib\site-packages\django\utils\module_loading.py", line 17, in import_string module = import_module(module_path) File "C:\Users\lee\.conda\envs\askcompany\lib\importlib\__init__.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1030, in _gcd_import File "<frozen importlib._bootstrap>", line 1007, in _find_and_load File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 680, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 850, in exec_module File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed File "C:\Users\lee\.conda\envs\askcompany\lib\site-packages\debug_toolbar\panels\settings.py", line 7, in <module> get_safe_settings = get_default_exception_reporter_filter().get_safe_settings AttributeError: 'SafeExceptionReporterFilter' object has no attribute 'get_safe_settings' 구글에 검색해봤는데 정확히 무슨 내용인지 모르겠네요...
-
해결됨파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
project 폴더 설정 관련 질문
안녕하세요, askcompany 프로젝트 폴더 설정하는 부분에서 몇가지 질문이 있습니다. 1. DEBUG 모드일때만 프로젝트 폴더의 urls.py에 media 관련 url을 추가해주는 이유가 있을까요? 해당 url은 어떤 역할을 하게 되는 것인가요? 2. 프로젝트 폴더의 urls.py에서 사용한 from django.conf import settings과 django github의 django.conf.global_settings.py의 차이가 궁금합니다. 3. 2번의 settings와 프로젝트 폴더에 자동으로 생성된 settings.py의 차이가 궁금합니다. 4. settings를 개발과 운영으로 나눴는데 그렇다면 settings/prod.py에 DEBUG=False와 같은 설정을 바꿔야 하는게 아닌지 궁금합니다. 감사합니다.
-
미해결플러터와 장고로 1시간만에 퀴즈 앱/서버 만들기 [무작정 풀스택]
github에서 파일을 가지고 와서 복사붙여넣기 했더니 자꾸 오류가 뜹니다.
제가 github에서 파일을 갖고 와서 붙여넣기를 하니 모든 파일마다 제일 위에 있는 import가 정의되지 않았다면서 오류가 많이 뜹니다. 그런데 어떻게 재설정해야하는 건지 모르겠습니다. 그리고 강의에서는 import가 없어 다 지우게 되면 다른 곳에서 갑자기 오류가 생기게 되는데 어떻게 해야할까요?? import를 어떻게 정의해야할까요??
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
혹시 계획하고 있으신 후속강의가 있을까요?
안녕하세요 강사님? 정말 오랜만에 질문 드립니다 ㅎㅎ 0. 우선 하나 여쭙고 싶은 게, 혹시 멘토링을 진행하시나요? -괜찮으시다면 강의외적으로 몇가지 질문을 드리고 싶어서, 혹시 인프런에서 진행되는 멘토링 처럼, 따로 어디선가 멘토링을 진행하고 계시다면 신청하고 싶어서 여쭤봅니다 ㅎㅎ 1. 혹시 후속강의가 있을까요? 해당 강의에서의 DRF의 기능들은 대체로 기본적인 몇가지 기능들에 대해서 소개해주시는 느낌이 강해서, 백엔드/DRF쪽으로 심화된 강의를 준비하시는 게 있을지 궁금합니다. 2. DRF나 장고관련해서, 강의에는 나오지 않았지만 현업에서 필요한 몇가지 학습 키워드나 책을 추천해주실 수 있으실까요? 마지막으로 감사합니다~ 선생님 강의 덕분에 부트캠프기간이나 끝나고 나서도 장고라는 프레임워크에는 늘 자신이 있더라구요. 감사인사를 꼭한번 드리고 싶었습니다! 감사합니다~
-
미해결장고 설계철학으로 시작하는 파이썬 장고 입문
장고에서의 비즈니스로직 관리에 대하여 (서비스)
안녕하세요 강사님. 스프링과 장고의 샘플코드 비교해주신 부분에서 질문이 있어서 남겨봅니다. 샘플코드를 보았을 때, 장고 코드에서는 뷰에서만 서비스의 일부 기능을 담당한다고 되어있는데요. 만약 비즈니스 로직이 커질 경우, 서비스와 컨트롤러가 나뉘어져있는 스프링쪽이 좀더 관리가 용이할 수 있을거 같다는 생각이 들었습니다. 비즈니스 로직이 비대해졌을 때 장고에서는 일반적으로 이 코드를 어디서 관리하는지 질문 드리고 싶습니다. 기존의 컨트롤러와 엔티티로서의 기능을 담당하고 있는 View와 Model로 분산해서 로직을 작성하게 될까요?? 아니면 별도로 service.py같은 파일을 생성해서 관리를 하는게 좋을까요? 강사님 의견이 궁금합니다.
-
해결됨파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
PasswordChangeForm 재정의 관련 질문
안녕하세요 강사님, PasswordChangeForm 을 재정의 하는 부분에서 질문이 있어 글 남깁니다. 1. PasswordChangeForm은 SetPasswordForm을 상속받기 때문에 clean_new_password2를 오버라이딩하여 해당 함수가 기존 대로 실행 될때 단순히 old_password와 같은지 비교하는 로직을 추가한게 맞나요? 2. clean_new_password2를 오버라이딩 할 때, super().clean_new_password2()를 하지 않고 self.cleaned_data.get('new_password2')를 하게 기존의 pw1==pw2 확인하는 로직이 사라져 버리기 때문에 문제가 생기는 것이 맞나요? (실험결과 new_pw1, new_pw2 를 다르게 넣으면 new_pw1 으로 변경이 됩니다). 즉 super()... 를 적어줘야 기존 로직을 지킬 수 있는 것이죠? 3. clean_new_password1은 새로운 함수를 정의한 것인데 clean_ 이 앞에 붙었기 때문에 PasswordChangeForm의 로직이 동작할 때 무조건 해당 함수가 실행이 되는 것이 맞나요? 이 함수가 실행되는 시점이 궁금합니다. 감사합니다.
-
미해결장고 설계철학으로 시작하는 파이썬 장고 입문
PyCharm Professional
안녕하세요. 본 강의에 대한 내용을 실습하는데 PyCharm Professional이 필수적인지 문의 드립니다. 우선 community로 연습해보려고 하는데 실습이 안되는 파트가 있나요?