묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 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
-
미해결작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지
pip freeze > requirements.txt 실행시 결과값이 다른 현상
결과 값이 아래와 같이 나오지 않고, 다른 결과가 나와요 beautifulsoup4==4.11.1Django==3.1.3django-bootstrap4==22.1django-environ==0.9.0environ==1.0importlib-metadata==2.0.0Pillow==9.1.1pytz==2020.4soupsieve==2.3.2.post1sqlparse==0.4.1zipp==3.4.0저는 결과 값이 아래 처럼 나오는데 왜 그런건가요? 아래와 같이 나오니까 도커 자동설치할때 이부분에서 오류가 나서 사용할 수가 없어요물론 수동으로 버전 입력하고 바꿔주면 사용가능한데, 애초에 프리즈 커멘드 사용시에 제대로 안되는 이유가 궁금 합니다. asgiref @ file:///tmp/build/80754af9/asgiref_1605055780383/workbeautifulsoup4==4.11.1certifi @ file:///private/var/folders/sy/f16zz6x50xz3113nwtb9bvq00000gp/T/abs_83242e7e-f82d-4a71-8ef2-9d71d212d249gu_wxmeq/croots/recipe/certifi_1655968827803/work/certifiDjango @ file:///tmp/build/80754af9/django_1617740316746/workdjango-bootstrap4==22.1django-environ==0.9.0gunicorn==20.1.0Pillow==9.1.1psycopg2 @ file:///Users/builder/ci_310/psycopg2_1642535040511/workpytz @ file:///private/var/folders/sy/f16zz6x50xz3113nwtb9bvq00000gp/T/abs_1caf090c-01b6-4973-adac-d2eb884a674e7zonb9eb/croots/recipe/pytz_1654762641285/worksoupsieve==2.3.2.post1sqlparse @ file:///tmp/build/80754af9/sqlparse_1602184451250/worktyping_extensions @ file:///opt/conda/conda-bld/typing_extensions_1647553014482/work
-
미해결
AWS 배포 Nginx 502 Bad Gateway 오류
에러로그 sudo vi /etc/nginx/nginx.conf sudo vi /etc/nginx/sites-enabled/default 서버를 구동하고 AWS Public IP로 접속하려고 해도 접속이 안됩니다 ,,, 어떻게 해야할까요
-
미해결
summernote 구현시 파일 저장 장소 수정
안녕하세요? djaono 프레임워크에 썸머노트를 이용하여 글쓰기(이미지 포함)를 구현중에 있습니다. 보통 summernote에 글과 이미지를 삽입하여 저장하면 다음과 같이 media폴더 하위에 이미지가 저장이 됩니다. 예) media/django-summernote/2022-02-15/test.jpg 위의 기본 저장장소를 다음과 같이 변경하고 싶은데 방법을 모르겠습니다. media/사용자아이디/django-summernote/2022-02-15/test.jpg 또는 media/사용자아이디/2022-02-15/test.jpg 물론 settings.py 에 미디어 경로를 MEDIA_ROOT = os.path.join(BASE_DIR, '_media/사용자아이디') 와 같이 수정하면 가능은 합니다. 사용자아이디를 하드코딩하지 않고 로그인한 사용자의 아이디(세션아이디)를 이용하여 동적으로 생성하고 싶습니다. 구현방법에 경험이 있으시거나 알고 계시분 있으시면 답변 부탁드립니다. 감사합니다.
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
윈도우에서 토큰값 입력하기
(django-with-react-rev3) C:\Dev\dev2\askcompany>TOKEN = c84a625c9345fbed62c9771afaca3cbf1ed65b4a 'TOKEN'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다. 이런 오류는 어떻게 해결해야 하나요?
-
미해결작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지
커스텀 데코레이터 질문(decorators.py)
decorators.py 에서 decorator를 커스텀 할 때 마지막의 return decorated는 정해 decorator 함수를 생성할 때 정해져 있는 규칙인가요?? def account_ownership_required(func): def decorated(request, *args , **kwargs): user = User.objects.get(pk=kwargs["pk"]) if not user == request.user: return HttpResponseForbidden() return func(request, *args, **kwargs) return decorated
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
IsAuthorOrReadOnly 퍼미션이 작동이 안되네요
views.py class PostViewSet(ModelViewSet): queryset = Post.objects.all() serializer_class = PostSerializer permission_classess = [IsAuthenticated,IsAuthorOrReadOnly] # login_required permissions.py class IsAuthorOrReadOnly(permissions.BasePermission): #인증이 되어야만 목록조회/포스팅 등록 허용 def has_permission(self, request, view): return request.user and request.user_authenticated # 작성자 아니면 조회만 가능, 작성자는 다른 작업도 가능 def has_object_permission(self, request, view, obj): if request.method in permissions.SAFE_METHODS: # SAFE_METHOD는 GET, HEAD 등 조회용 안전한 메소드 return True if request.method == 'DELETE': return request.user.is_superuser return obj.author == request.user 다른 유저가 쓴 글도 PATCH 메소드로 수정이 가능한데.. 코드상으론 잘못된부분이 없어보이네요 ㅠ
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
커스텀 PATCH 오류
http PATCH http://localhost:8000/post/3/set_public 를 터미널에 쳤을때 강사님처럼 객체가 나오지 않고 아래처럼 엄청난 html파일이 터미널에 찍히네요; http PATCH http://localhost:8000/post/2/set_public 로 했을때는 데이터가 수정되었는데 3으로 하니까 데이터가 수정이 안된모습입니다.. 무엇이 문제일까요 ㅠㅜ <td>TEMP</td> <td class="code"><pre>'C:\\Users\\Garam\\AppData\\Local\\Temp'</pre></td> </tr> <tr> <td>TERM_PROGRAM</td> <td class="code"><pre>'vscode'</pre></td> </tr> <tr> <td>TERM_PROGRAM_VERSION</td> <td class="code"><pre>'1.64.1'</pre></td> </tr> <tr> <td>TMP</td> <td class="code"><pre>'C:\\Users\\Garam\\AppData\\Local\\Temp'</pre></td> </tr> <tr> <td>USERDOMAIN</td> <td class="code"><pre>'DESKTOP-DJ9Q9OG'</pre></td> </tr> <tr> <td>USERDOMAIN_ROAMINGPROFILE</td> <td class="code"><pre>'DESKTOP-DJ9Q9OG'</pre></td> </tr> <tr> <td>USERNAME</td> <td class="code"><pre>'Garam'</pre></td> </tr> <tr> <td>USERPROFILE</td> <td class="code"><pre>'C:\\Users\\Garam'</pre></td> </tr> <tr> <td>VSCODE_GIT_ASKPASS_EXTRA_ARGS</td> <td class="code"><pre>'--ms-enable-electron-run-as-node'</pre></td> </tr> <tr> <td>VSCODE_GIT_ASKPASS_MAIN</td> <td class="code"><pre>('c:\\Users\\Garam\\AppData\\Local\\Programs\\Microsoft VS ' 'Code\\resources\\app\\extensions\\git\\dist\\askpass-main.js')</pre></td> </tr> <tr> <td>VSCODE_GIT_ASKPASS_NODE</td> <td class="code"><pre>'C:\\Users\\Garam\\AppData\\Local\\Programs\\Microsoft VS Code\\Code.exe'</pre></td> </tr> <tr> <td>VSCODE_GIT_IPC_HANDLE</td> <td class="code"><pre>'\\\\.\\pipe\\vscode-git-cf22388980-sock'</pre></td> </tr> <tr> <td>WINDIR</td> <td class="code"><pre>'C:\\WINDOWS'</pre></td> </tr> <tr> <td>wsgi.errors</td> <td class="code"><pre><_io.TextIOWrapper name='<stderr>' mode='w' encoding='utf-8'></pre></td> </tr> <tr> <td>wsgi.file_wrapper</td> <td class="code"><pre>''</pre></td> </tr> <tr> <td>wsgi.input</td> <td class="code"><pre><django.core.handlers.wsgi.LimitedStream object at 0x0000016394592AC0></pre></td> </tr> <tr> <td>wsgi.multiprocess</td> <td class="code"><pre>False</pre></td> </tr> <tr> <td>wsgi.multithread</td> <td class="code"><pre>True</pre></td> </tr> <tr> <td>wsgi.run_once</td> <td class="code"><pre>False</pre></td> </tr> <tr> <td>wsgi.url_scheme</td> <td class="code"><pre>'http'</pre></td> </tr> <tr> <td>wsgi.version</td> <td class="code"><pre>(1, 0)</pre></td> </tr> </tbody> </table> <h3 id="settings-info">Settings</h3> <h4>Using settings module <code>askcompany.settings</code></h4> <table class="req"> <thead> <tr> <th>Setting</th> <th>Value</th> </tr> </thead> <tbody> <tr> <td>ABSOLUTE_URL_OVERRIDES</td> <td class="code"><pre>{}</pre></td> </tr> <tr> <td>ADMINS</td> <td class="code"><pre>[]</pre></td> </tr> <tr> <td>ALLOWED_HOSTS</td> <td class="code"><pre>[]</pre></td> </tr> <tr> <td>APPEND_SLASH</td> <td class="code"><pre>True</pre></td> </tr> <tr> <td>AUTHENTICATION_BACKENDS</td> <td class="code"><pre>['django.contrib.auth.backends.ModelBackend']</pre></td> </tr> <tr> <td>AUTH_PASSWORD_VALIDATORS</td> <td class="code"><pre>'********************'</pre></td> </tr> <tr> <td>AUTH_USER_MODEL</td> <td class="code"><pre>'auth.User'</pre></td> </tr> <tr> <td>BASE_DIR</td> <td class="code"><pre>'C:\\Dev\\dev2\\askcompany'</pre></td> </tr> <tr> <td>CACHES</td> <td class="code"><pre>{'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'}}</pre></td> </tr> <tr> <td>CACHE_MIDDLEWARE_ALIAS</td> <td class="code"><pre>'default'</pre></td> </tr> <tr> <td>CACHE_MIDDLEWARE_KEY_PREFIX</td> <td class="code"><pre>'********************'</pre></td> </tr> <tr> <td>CACHE_MIDDLEWARE_SECONDS</td> <td class="code"><pre>600</pre></td> </tr> <tr> <td>CSRF_COOKIE_AGE</td> <td class="code"><pre>31449600</pre></td> </tr> <tr> <td>CSRF_COOKIE_DOMAIN</td> <td class="code"><pre>None</pre></td> </tr> <tr> <td>CSRF_COOKIE_HTTPONLY</td> <td class="code"><pre>False</pre></td> </tr> <tr> <td>CSRF_COOKIE_NAME</td> <td class="code"><pre>'csrftoken'</pre></td> </tr> <tr> <td>CSRF_COOKIE_PATH</td> <td class="code"><pre>'/'</pre></td> </tr> <tr> <td>CSRF_COOKIE_SAMESITE</td> <td class="code"><pre>'Lax'</pre></td> </tr> <tr> <td>CSRF_COOKIE_SECURE</td> <td class="code"><pre>False</pre></td> </tr> <tr> <td>CSRF_FAILURE_VIEW</td> <td class="code"><pre>'django.views.csrf.csrf_failure'</pre></td> </tr> <tr> <td>CSRF_HEADER_NAME</td> <td class="code"><pre>'HTTP_X_CSRFTOKEN'</pre></td> </tr> <tr> <td>CSRF_TRUSTED_ORIGINS</td> <td class="code"><pre>[]</pre></td> </tr> <tr> <td>CSRF_USE_SESSIONS</td> <td class="code"><pre>False</pre></td> </tr> <tr> <td>DATABASES</td> <td class="code"><pre>{'default': {'ATOMIC_REQUESTS': False, 'AUTOCOMMIT': True, 'CONN_MAX_AGE': 0, 'ENGINE': 'django.db.backends.sqlite3', 'HOST': '', 'NAME': 'C:\\Dev\\dev2\\askcompany\\db.sqlite3', 'OPTIONS': {}, 'PASSWORD': '********************', 'PORT': '', 'TEST': {'CHARSET': None, 'COLLATION': None, 'MIRROR': None, 'NAME': None}, 'TIME_ZONE': None, 'USER': ''}}</pre></td> </tr> <tr> <td>DATABASE_ROUTERS</td> <td class="code"><pre>[]</pre></td> </tr> <tr> <td>DATA_UPLOAD_MAX_MEMORY_SIZE</td> <td class="code"><pre>2621440</pre></td> </tr> <tr> <td>DATA_UPLOAD_MAX_NUMBER_FIELDS</td> <td class="code"><pre>1000</pre></td> </tr> <tr> <td>DATETIME_FORMAT</td> <td class="code"><pre>'N j, Y, P'</pre></td> </tr> <tr> <td>DATETIME_INPUT_FORMATS</td> <td class="code"><pre>['%Y-%m-%d %H:%M:%S', '%Y-%m-%d %H:%M:%S.%f', '%Y-%m-%d %H:%M', '%Y-%m-%d', '%m/%d/%Y %H:%M:%S', '%m/%d/%Y %H:%M:%S.%f', '%m/%d/%Y %H:%M', '%m/%d/%Y', '%m/%d/%y %H:%M:%S', '%m/%d/%y %H:%M:%S.%f', '%m/%d/%y %H:%M', '%m/%d/%y']</pre></td> </tr> <tr> <td>DATE_FORMAT</td> <td class="code"><pre>'N j, Y'</pre></td> </tr> <tr> <td>DATE_INPUT_FORMATS</td> <td class="code"><pre>['%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', '%b %d %Y', '%b %d, %Y', '%d %b %Y', '%d %b, %Y', '%B %d %Y', '%B %d, %Y', '%d %B %Y', '%d %B, %Y']</pre></td> </tr> <tr> <td>DEBUG</td> <td class="code"><pre>True</pre></td> </tr> <tr> <td>DEBUG_PROPAGATE_EXCEPTIONS</td> <td class="code"><pre>False</pre></td> </tr> <tr> <td>DECIMAL_SEPARATOR</td> <td class="code"><pre>'.'</pre></td> </tr> <tr> <td>DEFAULT_CHARSET</td> <td class="code"><pre>'utf-8'</pre></td> </tr> <tr> <td>DEFAULT_EXCEPTION_REPORTER_FILTER</td> <td class="code"><pre>'django.views.debug.SafeExceptionReporterFilter'</pre></td> </tr> <tr> <td>DEFAULT_FILE_STORAGE</td> <td class="code"><pre>'django.core.files.storage.FileSystemStorage'</pre></td> </tr> <tr> <td>DEFAULT_FROM_EMAIL</td> <td class="code"><pre>'webmaster@localhost'</pre></td> </tr> <tr> <td>DEFAULT_INDEX_TABLESPACE</td> <td class="code"><pre>''</pre></td> </tr> <tr> <td>DEFAULT_TABLESPACE</td> <td class="code"><pre>''</pre></td> </tr> <tr> <td>DISALLOWED_USER_AGENTS</td> <td class="code"><pre>[]</pre></td> </tr> <tr> <td>EMAIL_BACKEND</td> <td class="code"><pre>'django.core.mail.backends.smtp.EmailBackend'</pre></td> </tr> <tr> <td>EMAIL_HOST</td> <td class="code"><pre>'localhost'</pre></td> </tr> <tr> <td>EMAIL_HOST_PASSWORD</td> <td class="code"><pre>'********************'</pre></td> </tr> <tr> <td>EMAIL_HOST_USER</td> <td class="code"><pre>''</pre></td> </tr> <tr> <td>EMAIL_PORT</td> <td class="code"><pre>25</pre></td> </tr> <tr> <td>EMAIL_SSL_CERTFILE</td> <td class="code"><pre>None</pre></td> </tr> <tr> <td>EMAIL_SSL_KEYFILE</td> <td class="code"><pre>'********************'</pre></td> </tr> <tr> <td>EMAIL_SUBJECT_PREFIX</td> <td class="code"><pre>'[Django] '</pre></td> </tr> <tr> <td>EMAIL_TIMEOUT</td> <td class="code"><pre>None</pre></td> </tr> <tr> <td>EMAIL_USE_LOCALTIME</td> <td class="code"><pre>False</pre></td> </tr> <tr> <td>EMAIL_USE_SSL</td> <td class="code"><pre>False</pre></td> </tr> <tr> <td>EMAIL_USE_TLS</td> <td class="code"><pre>False</pre></td> </tr> <tr> <td>FILE_CHARSET</td> <td class="code"><pre>'utf-8'</pre></td> </tr> <tr> <td>FILE_UPLOAD_DIRECTORY_PERMISSIONS</td> <td class="code"><pre>None</pre></td> </tr> <tr> <td>FILE_UPLOAD_HANDLERS</td> <td class="code"><pre>['django.core.files.uploadhandler.MemoryFileUploadHandler', 'django.core.files.uploadhandler.TemporaryFileUploadHandler']</pre></td> </tr> <tr> <td>FILE_UPLOAD_MAX_MEMORY_SIZE</td> <td class="code"><pre>2621440</pre></td> </tr> <tr> <td>FILE_UPLOAD_PERMISSIONS</td> <td class="code"><pre>420</pre></td> </tr> <tr> <td>FILE_UPLOAD_TEMP_DIR</td> <td class="code"><pre>None</pre></td> </tr> <tr> <td>FIRST_DAY_OF_WEEK</td> <td class="code"><pre>0</pre></td> </tr> <tr> <td>FIXTURE_DIRS</td> <td class="code"><pre>[]</pre></td> </tr> <tr> <td>FORCE_SCRIPT_NAME</td> <td class="code"><pre>None</pre></td> </tr> <tr> <td>FORMAT_MODULE_PATH</td> <td class="code"><pre>None</pre></td> </tr> <tr> <td>FORM_RENDERER</td> <td class="code"><pre>'django.forms.renderers.DjangoTemplates'</pre></td> </tr> <tr> <td>IGNORABLE_404_URLS</td> <td class="code"><pre>[]</pre></td> </tr> <tr> <td>INSTALLED_APPS</td> <td class="code"><pre>['django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'rest_framework', 'instagram']</pre></td> </tr> <tr> <td>INTERNAL_IPS</td> <td class="code"><pre>[]</pre></td> </tr> <tr> <td>LANGUAGES</td> <td class="code"><pre>[('af', 'Afrikaans'), ('ar', 'Arabic'), ('ast', 'Asturian'), ('az', 'Azerbaijani'), ('bg', 'Bulgarian'), ('be', 'Belarusian'), ('bn', 'Bengali'), ('br', 'Breton'), ('bs', 'Bosnian'), ('ca', 'Catalan'), ('cs', 'Czech'), ('cy', 'Welsh'), ('da', 'Danish'), ('de', 'German'), ('dsb', 'Lower Sorbian'), ('el', 'Greek'), ('en', 'English'), ('en-au', 'Australian English'), ('en-gb', 'British English'), ('eo', 'Esperanto'), ('es', 'Spanish'), ('es-ar', 'Argentinian Spanish'), ('es-co', 'Colombian Spanish'), ('es-mx', 'Mexican Spanish'), ('es-ni', 'Nicaraguan Spanish'), ('es-ve', 'Venezuelan Spanish'), ('et', 'Estonian'), ('eu', 'Basque'), ('fa', 'Persian'), ('fi', 'Finnish'), ('fr', 'French'), ('fy', 'Frisian'), ('ga', 'Irish'), ('gd', 'Scottish Gaelic'), ('gl', 'Galician'), ('he', 'Hebrew'), ('hi', 'Hindi'), ('hr', 'Croatian'), ('hsb', 'Upper Sorbian'), ('hu', 'Hungarian'), ('hy', 'Armenian'), ('ia', 'Interlingua'), ('id', 'Indonesian'), ('io', 'Ido'), ('is', 'Icelandic'), ('it', 'Italian'), ('ja', 'Japanese'), ('ka', 'Georgian'), ('kab', 'Kabyle'), ('kk', 'Kazakh'), ('km', 'Khmer'), ('kn', 'Kannada'), ('ko', 'Korean'), ('lb', 'Luxembourgish'), ('lt', 'Lithuanian'), ('lv', 'Latvian'), ('mk', 'Macedonian'), ('ml', 'Malayalam'), ('mn', 'Mongolian'), ('mr', 'Marathi'), ('my', 'Burmese'), ('nb', 'Norwegian Bokmål'), ('ne', 'Nepali'), ('nl', 'Dutch'), ('nn', 'Norwegian Nynorsk'), ('os', 'Ossetic'), ('pa', 'Punjabi'), ('pl', 'Polish'), ('pt', 'Portuguese'), ('pt-br', 'Brazilian Portuguese'), ('ro', 'Romanian'), ('ru', 'Russian'), ('sk', 'Slovak'), ('sl', 'Slovenian'), ('sq', 'Albanian'), ('sr', 'Serbian'), ('sr-latn', 'Serbian Latin'), ('sv', 'Swedish'), ('sw', 'Swahili'), ('ta', 'Tamil'), ('te', 'Telugu'), ('th', 'Thai'), ('tr', 'Turkish'), ('tt', 'Tatar'), ('udm', 'Udmurt'), ('uk', 'Ukrainian'), ('ur', 'Urdu'), ('uz', 'Uzbek'), ('vi', 'Vietnamese'), ('zh-hans', 'Simplified Chinese'), ('zh-hant', 'Traditional Chinese')]</pre></td> </tr> <tr> <td>LANGUAGES_BIDI</td> <td class="code"><pre>['he', 'ar', 'fa', 'ur']</pre></td> </tr> <tr> <td>LANGUAGE_CODE</td> <td class="code"><pre>'en-us'</pre></td> </tr> <tr> <td>LANGUAGE_COOKIE_AGE</td> <td class="code"><pre>None</pre></td> </tr> <tr> <td>LANGUAGE_COOKIE_DOMAIN</td> <td class="code"><pre>None</pre></td> </tr> <tr> <td>LANGUAGE_COOKIE_HTTPONLY</td> <td class="code"><pre>False</pre></td> </tr> <tr> <td>LANGUAGE_COOKIE_NAME</td> <td class="code"><pre>'django_language'</pre></td> </tr> <tr> <td>LANGUAGE_COOKIE_PATH</td> <td class="code"><pre>'/'</pre></td> </tr> <tr> <td>LANGUAGE_COOKIE_SAMESITE</td> <td class="code"><pre>None</pre></td> </tr> <tr> <td>LANGUAGE_COOKIE_SECURE</td> <td class="code"><pre>False</pre></td> </tr> <tr> <td>LOCALE_PATHS</td> <td class="code"><pre>[]</pre></td> </tr> <tr> <td>LOGGING</td> <td class="code"><pre>{}</pre></td> </tr> <tr> <td>LOGGING_CONFIG</td> <td class="code"><pre>'logging.config.dictConfig'</pre></td> </tr> <tr> <td>LOGIN_REDIRECT_URL</td> <td class="code"><pre>'/accounts/profile/'</pre></td> </tr> <tr> <td>LOGIN_URL</td> <td class="code"><pre>'/accounts/login/'</pre></td> </tr> <tr> <td>LOGOUT_REDIRECT_URL</td> <td class="code"><pre>None</pre></td> </tr> <tr> <td>MANAGERS</td> <td class="code"><pre>[]</pre></td> </tr> <tr> <td>MEDIA_ROOT</td> <td class="code"><pre>''</pre></td> </tr> <tr> <td>MEDIA_URL</td> <td class="code"><pre>''</pre></td> </tr> <tr> <td>MESSAGE_STORAGE</td> <td class="code"><pre>'django.contrib.messages.storage.fallback.FallbackStorage'</pre></td> </tr> <tr> <td>MIDDLEWARE</td> <td class="code"><pre>['django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware']</pre></td> </tr> <tr> <td>MIGRATION_MODULES</td> <td class="code"><pre>{}</pre></td> </tr> <tr> <td>MONTH_DAY_FORMAT</td> <td class="code"><pre>'F j'</pre></td> </tr> <tr> <td>NUMBER_GROUPING</td> <td class="code"><pre>0</pre></td> </tr> <tr> <td>PASSWORD_HASHERS</td> <td class="code"><pre>'********************'</pre></td> </tr> <tr> <td>PASSWORD_RESET_TIMEOUT_DAYS</td> <td class="code"><pre>'********************'</pre></td> </tr> <tr> <td>PREPEND_WWW</td> <td class="code"><pre>False</pre></td> </tr> <tr> <td>ROOT_URLCONF</td> <td class="code"><pre>'askcompany.urls'</pre></td> </tr> <tr> <td>SECRET_KEY</td> <td class="code"><pre>'********************'</pre></td> </tr> <tr> <td>SECURE_BROWSER_XSS_FILTER</td> <td class="code"><pre>False</pre></td> </tr> <tr> <td>SECURE_CONTENT_TYPE_NOSNIFF</td> <td class="code"><pre>True</pre></td> </tr> <tr> <td>SECURE_HSTS_INCLUDE_SUBDOMAINS</td> <td class="code"><pre>False</pre></td> </tr> <tr> <td>SECURE_HSTS_PRELOAD</td> <td class="code"><pre>False</pre></td> </tr> <tr> <td>SECURE_HSTS_SECONDS</td> <td class="code"><pre>0</pre></td> </tr> <tr> <td>SECURE_PROXY_SSL_HEADER</td> <td class="code"><pre>None</pre></td> </tr> <tr> <td>SECURE_REDIRECT_EXEMPT</td> <td class="code"><pre>[]</pre></td> </tr> <tr> <td>SECURE_REFERRER_POLICY</td> <td class="code"><pre>None</pre></td> </tr> <tr> <td>SECURE_SSL_HOST</td> <td class="code"><pre>None</pre></td> </tr> <tr> <td>SECURE_SSL_REDIRECT</td> <td class="code"><pre>False</pre></td> </tr> <tr> <td>SERVER_EMAIL</td> <td class="code"><pre>'root@localhost'</pre></td> </tr> <tr> <td>SESSION_CACHE_ALIAS</td> <td class="code"><pre>'default'</pre></td> </tr> <tr> <td>SESSION_COOKIE_AGE</td> <td class="code"><pre>1209600</pre></td> </tr> <tr> <td>SESSION_COOKIE_DOMAIN</td> <td class="code"><pre>None</pre></td> </tr> <tr> <td>SESSION_COOKIE_HTTPONLY</td> <td class="code"><pre>True</pre></td> </tr> <tr> <td>SESSION_COOKIE_NAME</td> <td class="code"><pre>'sessionid'</pre></td> </tr> <tr> <td>SESSION_COOKIE_PATH</td> <td class="code"><pre>'/'</pre></td> </tr> <tr> <td>SESSION_COOKIE_SAMESITE</td> <td class="code"><pre>'Lax'</pre></td> </tr> <tr> <td>SESSION_COOKIE_SECURE</td> <td class="code"><pre>False</pre></td> </tr> <tr> <td>SESSION_ENGINE</td> <td class="code"><pre>'django.contrib.sessions.backends.db'</pre></td> </tr> <tr> <td>SESSION_EXPIRE_AT_BROWSER_CLOSE</td> <td class="code"><pre>False</pre></td> </tr> <tr> <td>SESSION_FILE_PATH</td> <td class="code"><pre>None</pre></td> </tr> <tr> <td>SESSION_SAVE_EVERY_REQUEST</td> <td class="code"><pre>False</pre></td> </tr> <tr> <td>SESSION_SERIALIZER</td> <td class="code"><pre>'django.contrib.sessions.serializers.JSONSerializer'</pre></td> </tr> <tr> <td>SETTINGS_MODULE</td> <td class="code"><pre>'askcompany.settings'</pre></td> </tr> <tr> <td>SHORT_DATETIME_FORMAT</td> <td class="code"><pre>'m/d/Y P'</pre></td> </tr> <tr> <td>SHORT_DATE_FORMAT</td> <td class="code"><pre>'m/d/Y'</pre></td> </tr> <tr> <td>SIGNING_BACKEND</td> <td class="code"><pre>'django.core.signing.TimestampSigner'</pre></td> </tr> <tr> <td>SILENCED_SYSTEM_CHECKS</td> <td class="code"><pre>[]</pre></td> </tr> <tr> <td>STATICFILES_DIRS</td> <td class="code"><pre>[]</pre></td> </tr> <tr> <td>STATICFILES_FINDERS</td> <td class="code"><pre>['django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder']</pre></td> </tr> <tr> <td>STATICFILES_STORAGE</td> <td class="code"><pre>'django.contrib.staticfiles.storage.StaticFilesStorage'</pre></td> </tr> <tr> <td>STATIC_ROOT</td> <td class="code"><pre>None</pre></td> </tr> <tr> <td>STATIC_URL</td> <td class="code"><pre>'/static/'</pre></td> </tr> <tr> <td>TEMPLATES</td> <td class="code"><pre>[{'APP_DIRS': True, 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [], 'OPTIONS': {'context_processors': ['django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages']}}]</pre></td> </tr> <tr> <td>TEST_NON_SERIALIZED_APPS</td> <td class="code"><pre>[]</pre></td> </tr> <tr> <td>TEST_RUNNER</td> <td class="code"><pre>'django.test.runner.DiscoverRunner'</pre></td> </tr> <tr> <td>THOUSAND_SEPARATOR</td> <td class="code"><pre>','</pre></td> </tr> <tr> <td>TIME_FORMAT</td> <td class="code"><pre>'P'</pre></td> </tr> <tr> <td>TIME_INPUT_FORMATS</td> <td class="code"><pre>['%H:%M:%S', '%H:%M:%S.%f', '%H:%M']</pre></td> </tr> <tr> <td>TIME_ZONE</td> <td class="code"><pre>'UTC'</pre></td> </tr> <tr> <td>USE_I18N</td> <td class="code"><pre>True</pre></td> </tr> <tr> <td>USE_L10N</td> <td class="code"><pre>True</pre></td> </tr> <tr> <td>USE_THOUSAND_SEPARATOR</td> <td class="code"><pre>False</pre></td> </tr> <tr> <td>USE_TZ</td> <td class="code"><pre>True</pre></td> </tr> <tr> <td>USE_X_FORWARDED_HOST</td> <td class="code"><pre>False</pre></td> </tr> <tr> <td>USE_X_FORWARDED_PORT</td> <td class="code"><pre>False</pre></td> </tr> <tr> <td>WSGI_APPLICATION</td> <td class="code"><pre>'askcompany.wsgi.application'</pre></td> </tr> <tr> <td>X_FRAME_OPTIONS</td> <td class="code"><pre>'DENY'</pre></td> </tr> <tr> <td>YEAR_MONTH_FORMAT</td> <td class="code"><pre>'F Y'</pre></td> </tr> </tbody> </table> </div> <div id="explanation"> <p> You're seeing this error because you have <code>DEBUG = True</code> in your Django settings file. Change that to <code>False</code>, and Django will display a standard page generated by the handler for this status code. </p> </div> </body> </html>
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
urlpatterns 질문
아래처럼 urlpatterns를 작성하면 될 것 같은데 re_path를 사용하시는 이유가 무엇인가요? path('post/<str:username>/', views.user_page, name='user_page'),
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
선생님 강의내용을 그대로 블로깅한분이 계신데 괜찮은가요?
https://moz1e.tistory.com/73?category=856588 진도를 나가다 보니 한 수강생분이 강의내용을 토대로 블로깅하셨는데 문제가 될 수 있을까봐 알려드립니다.
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
urls.py에서 django_pydenticon 참조가 안되네요
askcompany/urls.py askcompany/settings/common.py 안되는 이유가 뭔지 모르겠습니다
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
PostUpdateView가 변경된 form 을 저장하지 않습니다.
class PostUpdateView(LoginRequiredMixin,UpdateView): model = Post form_class = PostForm def form_valid(self, form): messages.success(self.request, '포스팅을 수정했습니다.') return super().form_valid(form) post_edit = PostUpdateView.as_view() 선생님과 같이 해당 코드를 작성해봤는데요 이게 저장과 메세지는 구현이 되는데 실제로 변경사항이 저장되지는 않는듯 합니다
-
미해결
장고 회원가입시 로그인 화면으로 이동하는 방법.
장고로 회원가입 및 로그인 만들고 있습니다. 둘다 회원가입 완료 및 로그인 완료시 메인화면으로 넘어가게끔 설정은 완료했는데, 더 나아가서 회원가입시 로그인 화면으로 이동하게끔 바꿔주료고 합니다. 원래는 밑에 registerview 클래스의 success_url 이 '/' 인데, 이 부분만 login.html로 바꿔주면 될 줄 알았는데 에러가 이런식으로 나오더라고요 해당 login.html파일은 fcuser의 하위폴더에 있는 템플릿에 있습니다. register도 마찬가지로 login.html과 같은 템플릿 안에 있습니다. fcuser/login.html로 연결이 되야 제가 원하는 화면이 나올거 같은데, 무엇이 문제일까요 ㅠㅠ ㅕurl경로 설정은 다음과 같이 되어 있습니다. url 설정을 다시 해줘야 하는걸까요 ㅠㅠ
-
미해결작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지
magicgrid.js 파일이름
저는 magicgrid.js라고 이름을 지었을 때는 계속 list.html이 인식을 못하는데 magicgrid123.js라고 하니까 되는데 혹시 왜 그런지 아시나요.. 돼서 기쁘긴 한데 도대체 왜 이런건지 이유를 모르겠네요