수강이 제한됩니다.
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
HTTPie post 요청시 질문이 있습니다!
강의와 같이 perform_create 함수를 구성하였을때 웹으로 post 요청을 보냈을때에는 데이터가 생성이 되었는데, httpie를 통한 post 요청시에는 아래와 같은 html 응답이 넘어오면서 에러가 났습니다. 혹시 이 문제의 원인이 무엇인지 알 수 있을까요?? 밑에 설명 문구에 DEBUG=True이기 때문에 해당 에러가 발생했다고 하여 False로 바꾸어 보았지만 해결이 되지 않았습니다. 그리고 post를 제외한 다른 요청들은 모두 정삭적으로 응답이 옵니다. <tr> <td>self</td> <td class="code"><pre><django.db.models.fields.related_descriptors.ForwardManyToOneDescri ptor object at 0x0000012F717A5670></pre></td> </tr> <tr> <td>value</td> <td class="code"><pre><django.contrib.auth.models.AnonymousUser object at 0x0000012F7293A 190></pre></td> </tr> </tbody> </table> </details> </li> </ul> </div> <form action="https://dpaste.com/" name="pasteform" id="pasteform" method="post"> <div id="pastebinTraceback" class="pastebin"> <input type="hidden" name="language" value="PythonConsole"> <input type="hidden" name="title" value="ValueError at /ukstagram/posts/"> <input type="hidden" name="source" value="Django Dpaste Agent"> <input type="hidden" name="poster" value="Django"> <textarea name="content" id="traceback_area" cols="140" rows="25"> Environment: Request Method: POST Request URL: http://localhost:8000/ukstagram/posts/ Django Version: 4.0.4 Python Version: 3.8.12 Installed Applications: ['django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'rest_framework', 'ukstagram'] Installed Middleware: ['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'] Traceback (most recent call last): File "C:\Users\cswoo\.conda\envs\drf\lib\site-packages\django\core\handlers\exception.py", line 55, in inner response = get_response(request) File "C:\Users\cswoo\.conda\envs\drf\lib\site-packages\django\core\handlers\base.py", line 197, in _get_respon se response = wrapped_callback(request, *callback_args, **callback_kwargs) File "C:\Users\cswoo\.conda\envs\drf\lib\site-packages\django\views\decorators\csrf.py", line 54, in wrapped_v iew return view_func(*args, **kwargs) File "C:\Users\cswoo\.conda\envs\drf\lib\site-packages\rest_framework\viewsets.py", line 125, in view return self.dispatch(request, *args, **kwargs) File "C:\Users\cswoo\.conda\envs\drf\lib\site-packages\rest_framework\views.py", line 509, in dispatch response = self.handle_exception(exc) File "C:\Users\cswoo\.conda\envs\drf\lib\site-packages\rest_framework\views.py", line 469, in handle_exception self.raise_uncaught_exception(exc) File "C:\Users\cswoo\.conda\envs\drf\lib\site-packages\rest_framework\views.py", line 480, in raise_uncaught_e xception raise exc File "C:\Users\cswoo\.conda\envs\drf\lib\site-packages\rest_framework\views.py", line 506, in dispatch response = handler(request, *args, **kwargs) File "C:\Users\cswoo\.conda\envs\drf\lib\site-packages\rest_framework\mixins.py", line 19, in create self.perform_create(serializer) File "C:\Users\cswoo\OneDrive\Documents\DRF\ukstagram\views.py", line 46, in perform_create serializer.save(author=self.request.user) File "C:\Users\cswoo\.conda\envs\drf\lib\site-packages\rest_framework\serializers.py", line 212, in save self.instance = self.create(validated_data) File "C:\Users\cswoo\.conda\envs\drf\lib\site-packages\rest_framework\serializers.py", line 962, in create instance = ModelClass._default_manager.create(**validated_data) File "C:\Users\cswoo\.conda\envs\drf\lib\site-packages\django\db\models\manager.py", line 85, in manager_metho d return getattr(self.get_queryset(), name)(*args, **kwargs) File "C:\Users\cswoo\.conda\envs\drf\lib\site-packages\django\db\models\query.py", line 512, in create obj = self.model(**kwargs) File "C:\Users\cswoo\.conda\envs\drf\lib\site-packages\django\db\models\base.py", line 541, in __init__ _setattr(self, field.name, rel_obj) File "C:\Users\cswoo\.conda\envs\drf\lib\site-packages\django\db\models\fields\related_descriptors.py", line 2 35, in __set__ raise ValueError( Exception Type: ValueError at /ukstagram/posts/ Exception Value: Cannot assign "<django.contrib.auth.models.AnonymousUser object at 0x0000012F7293A190&g t;": "Post.author" must be a "User" instance. </textarea> <br><br> <input type="submit" value="Share this traceback on a public website"> </div> </form> </div> <div id="requestinfo"> <h2>Request information</h2> <h3 id="user-info">USER</h3> <p>AnonymousUser</p> <h3 id="get-info">GET</h3> <p>No GET data</p> <h3 id="post-info">POST</h3> <p>No POST data</p> <h3 id="files-info">FILES</h3> <p>No FILES data</p> <h3 id="cookie-info">COOKIES</h3> <p>No cookie data</p> <h3 id="meta-info">META</h3> <table class="req"> <thead> <tr> <th>Variable</th> <th>Value</th> </tr> </thead> <tbody> <tr> <td>ALLUSERSPROFILE</td> <td class="code"><pre>'C:\\ProgramData'</pre></td> </tr> <tr> <td>APPDATA</td> <td class="code"><pre>'C:\\Users\\cswoo\\AppData\\Roaming'</pre></td> </tr> <tr> <td>CLSID</td> <td class="code"><pre>'{290BFAA9-A9FC-AD78-7B4F-4803F0742CCA}'</pre></td> </tr> <tr> <td>COMMONPROGRAMFILES</td> <td class="code"><pre>'C:\\Program Files\\Common Files'</pre></td> </tr> <tr> <td>COMMONPROGRAMFILES(X86)</td> <td class="code"><pre>'C:\\Program Files (x86)\\Common Files'</pre></td> </tr> <tr> <td>COMMONPROGRAMW6432</td> <td class="code"><pre>'C:\\Program Files\\Common Files'</pre></td> </tr> <tr> <td>COMPUTERNAME</td> <td class="code"><pre>'DESKTOP-9D39MMH'</pre></td> </tr> <tr> <td>COMSPEC</td> <td class="code"><pre>'C:\\WINDOWS\\system32\\cmd.exe'</pre></td> </tr> <tr> <td>CONDA_DEFAULT_ENV</td> <td class="code"><pre>'drf'</pre></td> </tr> <tr> <td>CONDA_PREFIX</td> <td class="code"><pre>'C:\\Users\\cswoo\\.conda\\envs\\drf'</pre></td> </tr> <tr> <td>CONDA_PROMPT_MODIFIER</td> <td class="code"><pre>'(drf) '</pre></td> </tr> <tr> <td>CONDA_SHLVL</td> <td class="code"><pre>'1'</pre></td> </tr> <tr> <td>CONTENT_LENGTH</td> <td class="code"><pre>'45'</pre></td> </tr> <tr> <td>CONTENT_TYPE</td> <td class="code"><pre>'application/json'</pre></td> </tr> <tr> <td>DJANGO_SETTINGS_MODULE</td> <td class="code"><pre>'DRF.settings'</pre></td> </tr> <tr> <td>DRIVERDATA</td> <td class="code"><pre>'C:\\Windows\\System32\\Drivers\\DriverData'</pre></td> </tr> <tr> <td>FPS_BROWSER_APP_PROFILE_STRING</td> <td class="code"><pre>'Internet Explorer'</pre></td> </tr> <tr> <td>FPS_BROWSER_USER_PROFILE_STRING</td> <td class="code"><pre>'Default'</pre></td> </tr> <tr> <td>GATEWAY_INTERFACE</td> <td class="code"><pre>'CGI/1.1'</pre></td> </tr> <tr> <td>GOOGLE_API_KEY</td> <td class="code"><pre>'********************'</pre></td> </tr> <tr> <td>GOOGLE_DEFAULT_CLIENT_ID</td> <td class="code"><pre>'no'</pre></td> </tr> <tr> <td>GOOGLE_DEFAULT_CLIENT_SECRET</td> <td class="code"><pre>'********************'</pre></td> </tr> <tr> <td>HOMEDRIVE</td> <td class="code"><pre>'C:'</pre></td> </tr> <tr> <td>HOMEPATH</td> <td class="code"><pre>'\\Users\\cswoo'</pre></td> </tr> <tr> <td>HTTP_ACCEPT</td> <td class="code"><pre>'application/json, */*;q=0.5'</pre></td> </tr> <tr> <td>HTTP_ACCEPT_ENCODING</td> <td class="code"><pre>'gzip, deflate'</pre></td> </tr> <tr> <td>HTTP_CONNECTION</td> <td class="code"><pre>'keep-alive'</pre></td> </tr> <tr> <td>HTTP_HOST</td> <td class="code"><pre>'localhost:8000'</pre></td> </tr> <tr> <td>HTTP_USER_AGENT</td> <td class="code"><pre>'HTTPie/3.1.0'</pre></td> </tr> <tr> <td>IDEA_INITIAL_DIRECTORY</td> <td class="code"><pre>'C:\\Users\\cswoo\\OneDrive\\Documents'</pre></td> </tr> <tr> <td>LOCALAPPDATA</td> <td class="code"><pre>'C:\\Users\\cswoo\\AppData\\Local'</pre></td> </tr> <tr> <td>LOGONSERVER</td> <td class="code"><pre>'\\\\DESKTOP-9D39MMH'</pre></td> </tr> <tr> <td>NUMBER_OF_PROCESSORS</td> <td class="code"><pre>'6'</pre></td> </tr> <tr> <td>ONEDRIVE</td> <td class="code"><pre>'C:\\Users\\cswoo\\OneDrive'</pre></td> </tr> <tr> <td>ONEDRIVECONSUMER</td> <td class="code"><pre>'C:\\Users\\cswoo\\OneDrive'</pre></td> </tr> <tr> <td>OS</td> <td class="code"><pre>'Windows_NT'</pre></td> </tr> <tr> <td>PATH</td> <td class="code"><pre>('C:\\Users\\cswoo\\.conda\\envs\\drf;C:\\Users\\cswoo\\.conda\\envs\\drf\\ Library\\mingw-w64\\bin;C:\\Users\\cswoo\\.conda\\envs\\drf\\Library\\usr\\bin;C:\\Users\\cswoo\\.conda\\envs\\d rf\\Library\\bin;C:\\Users\\cswoo\\.conda\\envs\\drf\\Scripts;C:\\Users\\cswoo\\.conda\\envs\\drf\\bin;C:\\Progr amData\\Anaconda3\\condabin;C:\\ProgramData\\Anaconda3;C:\\ProgramData\\Anaconda3\\Library\\mingw-w64\\bin;C:\\P rogramData\\Anaconda3\\Library\\usr\\bin;C:\\ProgramData\\Anaconda3\\Library\\bin;C:\\ProgramData\\Anaconda3\\Sc ripts;C:\\WINDOWS\\system32;C:\\WINDOWS;C:\\WINDOWS\\System32\\Wbem;C:\\WINDOWS\\System32\\WindowsPowerShell\\v1 .0;C:\\WINDOWS\\System32\\OpenSSH;C:\\Program ' 'Files\\Git\\cmd;C:\\Users\\cswoo\\AppData\\Local\\Microsoft\\WindowsApps;C:\\Users\\cswoo\\AppData\\Local \\Microsoft\\WindowsApps;C:\\Program ' 'Files\\JetBrains\\PyCharm Community Edition ' '2021.2.2\\bin;.;C:\\Users\\cswoo\\AppData\\Local\\afreeca;C:\\Users\\cswoo\\AppData\\Local\\Programs\\Mic rosoft ' 'VS Code\\bin;C:\\Program Files\\JetBrains\\PyCharm 2021.3.3\\bin;.')</pre></td> </tr> <tr> <td>PATHEXT</td> <td class="code"><pre>'.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC'</pre></td> </tr> <tr> <td>PATH_INFO</td> <td class="code"><pre>'/ukstagram/posts/'</pre></td> </tr> <tr> <td>PROCESSOR_ARCHITECTURE</td> <td class="code"><pre>'AMD64'</pre></td> </tr> <tr> <td>PROCESSOR_IDENTIFIER</td> <td class="code"><pre>'Intel64 Family 6 Model 158 Stepping 10, GenuineIntel'</pre></td> </tr> <tr> <td>PROCESSOR_LEVEL</td> <td class="code"><pre>'6'</pre></td> </tr> <tr> <td>PROCESSOR_REVISION</td> <td class="code"><pre>'9e0a'</pre></td> </tr> <tr> <td>PROGRAMDATA</td> <td class="code"><pre>'C:\\ProgramData'</pre></td> </tr> <tr> <td>PROGRAMFILES</td> <td class="code"><pre>'C:\\Program Files'</pre></td> </tr> <tr> <td>PROGRAMFILES(X86)</td> <td class="code"><pre>'C:\\Program Files (x86)'</pre></td> </tr> <tr> <td>PROGRAMW6432</td> <td class="code"><pre>'C:\\Program Files'</pre></td> </tr> <tr> <td>PROMPT</td> <td class="code"><pre>'(drf) $P$G'</pre></td> </tr> <tr> <td>PSMODULEPATH</td> <td class="code"><pre>('C:\\Program ' 'Files\\WindowsPowerShell\\Modules;C:\\WINDOWS\\system32\\WindowsPowerShell\\v1.0\\Modules')</pre></t d> </tr> <tr> <td>PUBLIC</td> <td class="code"><pre>'C:\\Users\\Public'</pre></td> </tr> <tr> <td>PYCHARM</td> <td class="code"><pre>'C:\\Program Files\\JetBrains\\PyCharm 2021.3.3\\bin;'</pre></td> </tr> <tr> <td>PYCHARM COMMUNITY EDITION</td> <td class="code"><pre>'C:\\Program Files\\JetBrains\\PyCharm Community Edition 2021.2.2\\bin; 7;</pre></td> </tr> <tr> <td>PYTHONIOENCODING</td> <td class="code"><pre>'utf-8'</pre></td> </tr> <tr> <td>QUERY_STRING</td> <td class="code"><pre>''</pre></td> </tr> <tr> <td>REMOTE_ADDR</td> <td class="code"><pre>'127.0.0.1'</pre></td> </tr> <tr> <td>REMOTE_HOST</td> <td class="code"><pre>''</pre></td> </tr> <tr> <td>REQUEST_METHOD</td> <td class="code"><pre>'POST'</pre></td> </tr> <tr> <td>RUN_MAIN</td> <td class="code"><pre>'true'</pre></td> </tr> <tr> <td>SCRIPT_NAME</td> <td class="code"><pre>''</pre></td> </tr> <tr> <td>SERVER_NAME</td> <td class="code"><pre>'DESKTOP-9D39MMH'</pre></td> </tr> <tr> <td>SERVER_PORT</td> <td class="code"><pre>'8000'</pre></td> </tr> <tr> <td>SERVER_PROTOCOL</td> <td class="code"><pre>'HTTP/1.1'</pre></td> </tr> <tr> <td>SERVER_SOFTWARE</td> <td class="code"><pre>'WSGIServer/0.2'</pre></td> </tr> <tr> <td>SESSIONNAME</td> <td class="code"><pre>'Console'</pre></td> </tr> <tr> <td>SYSTEMDRIVE</td> <td class="code"><pre>'C:'</pre></td> </tr> <tr> <td>SYSTEMROOT</td> <td class="code"><pre>'C:\\WINDOWS'</pre></td> </tr> <tr> <td>TEMP</td> <td class="code"><pre>'C:\\Users\\cswoo\\AppData\\Local\\Temp'</pre></td> </tr> <tr> <td>TERMINAL_EMULATOR</td> <td class="code"><pre>'JetBrains-JediTerm'</pre></td> </tr> <tr> <td>TERM_SESSION_ID</td> <td class="code"><pre>'8e1c69ed-565b-4df9-abcb-4027930ba073'</pre></td> </tr> <tr> <td>TMP</td> <td class="code"><pre>'C:\\Users\\cswoo\\AppData\\Local\\Temp'</pre></td> </tr> <tr> <td>USERDOMAIN</td> <td class="code"><pre>'DESKTOP-9D39MMH'</pre></td> </tr> <tr> <td>USERDOMAIN_ROAMINGPROFILE</td> <td class="code"><pre>'DESKTOP-9D39MMH'</pre></td> </tr> <tr> <td>USERNAME</td> <td class="code"><pre>'cswoo'</pre></td> </tr> <tr> <td>USERPROFILE</td> <td class="code"><pre>'C:\\Users\\cswoo'</pre></td> </tr> <tr> <td>WINDIR</td> <td class="code"><pre>'C:\\WINDOWS'</pre></td> </tr> <tr> <td>__INTELLIJ_COMMAND_HISTFILE__</td> <td class="code"><pre>'C:\\Users\\cswoo\\AppData\\Local\\JetBrains\\PyCharm2021.3\\terminal\\hist ory\\DRF-history'</pre></td> </tr> <tr> <td>wsgi.errors</td> <td class="code"><pre><colorama.ansitowin32.StreamWrapper object at 0x0000012F70805610></pre></t d> </tr> <tr> <td>wsgi.file_wrapper</td> <td class="code"><pre><class 'wsgiref.util.FileWrapper'></pre></td> </tr> <tr> <td>wsgi.input</td> <td class="code"><pre><django.core.handlers.wsgi.LimitedStream object at 0x0000012F72D67E50></pr e></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>DRF.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>WindowsPath('C:/Users/cswoo/OneDrive/Documents/DRF')</pre></td> </tr> <tr> <td>CACHES</td> <td class="code"><pre>{'default': {'BACKEND': 'django.core.cache.backends.loc mem.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': WindowsPath('C:/Users/cswoo/OneDrive/Documents/DRF/db.sqlite3'), 'OPTIONS': {}, 'PASSWORD': '********************', 'PORT': '', 'TEST': {'CHARSET': None, 'COLLATION': None, 'MIGRATE': True, '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', '%m/%d/%Y %H:%M:%S', '%m/%d/%Y %H:%M:%S.%f', '%m/%d/%Y %H:%M', '%m/%d/%y %H:%M:%S', '%m/%d/%y %H:%M:%S.%f', '%m/%d/%y %H:%M']</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_AUTO_FIELD</td> <td class="code"><pre>'django.db.models.BigAutoField'</pre></td> </tr> <tr> <td>DEFAULT_CHARSET</td> <td class="code"><pre>'utf-8'</pre></td> </tr> <tr> <td>DEFAULT_EXCEPTION_REPORTER</td> <td class="code"><pre>'django.views.debug.ExceptionReporter'</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_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', 'ukstagram']</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'), ('ar-dz', 'Algerian 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'), ('ig', 'Igbo'), ('io', 'Ido'), ('is', 'Icelandic'), ('it', 'Italian'), ('ja', 'Japanese'), ('ka', 'Georgian'), ('kab', 'Kabyle'), ('kk', 'Kazakh'), ('km', 'Khmer'), ('kn', 'Kannada'), ('ko', 'Korean'), ('ky', 'Kyrgyz'), ('lb', 'Luxembourgish'), ('lt', 'Lithuanian'), ('lv', 'Latvian'), ('mk', 'Macedonian'), ('ml', 'Malayalam'), ('mn', 'Mongolian'), ('mr', 'Marathi'), ('ms', 'Malay'), ('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'), ('tg', 'Tajik'), ('th', 'Thai'), ('tk', 'Turkmen'), ('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', 'ar-dz', 'fa', 'ur 7;]</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</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>'DRF.urls'</pre></td> </tr> <tr> <td>SECRET_KEY</td> <td class="code"><pre>'********************'</pre></td> </tr> <tr> <td>SECURE_CONTENT_TYPE_NOSNIFF</td> <td class="code"><pre>True</pre></td> </tr> <tr> <td>SECURE_CROSS_ORIGIN_OPENER_POLICY</td> <td class="code"><pre>'same-origin'</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>'same-origin'</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>'DRF.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>'Asia/Seoul'</pre></td> </tr> <tr> <td>USE_DEPRECATED_PYTZ</td> <td class="code"><pre>False</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>'DRF.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"> (drf) C:\Users\cswoo\OneDrive\Documents\DRF>http POST http://localhost:8000/ukstagram/posts/ message="23th post" is_public=true HTTP/1.1 500 Internal Server Error Content-Length: 125684 Content-Type: text/html Cross-Origin-Opener-Policy: same-origin Date: Fri, 22 Apr 2022 10:48:09 GMT Referrer-Policy: same-origin Server: WSGIServer/0.2 CPython/3.8.12 Vary: Cookie X-Content-Type-Options: nosniff X-Frame-Options: DENY <!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <meta name="robots" content="NONE,NOARCHIVE"> <title>ValueError at /ukstagram/posts/</title> <style type="text/css"> html * { padding:0; margin:0; } body * { padding:10px 20px; } body * * { padding:0; } body { font:small sans-serif; background-color:#fff; color:#000; } body>div { border-bottom:1px solid #ddd; } h1 { font-weight:normal; } h2 { margin-bottom:.8em; } h3 { margin:1em 0 .5em 0; } h4 { margin:0 0 .5em 0; font-weight: normal; } code, pre { font-size: 100%; white-space: pre-wrap; } summary { cursor: pointer; } table { border:1px solid #ccc; border-collapse: collapse; width:100%; background:white; } tbody td, tbody th { vertical-align:top; padding:2px 3px; } thead th { padding:1px 6px 1px 3px; background:#fefefe; text-align:left; font-weight:normal; font-size:11px; border:1px solid #ddd; } tbody th { width:12em; text-align:right; color:#666; padding-right:.5em; } table.vars { margin:5px 0 2px 40px; } table.vars td, table.req td { font-family:monospace; } table td.code { width:100%; } table td.code pre { overflow:hidden; } table.source th { color:#666; } table.source td { font-family:monospace; white-space:pre; border-bottom:1px solid #eee; } ul.traceback { list-style-type:none; color: #222; } ul.traceback li.frame { padding-bottom:1em; color:#4f4f4f; } ul.traceback li.user { background-color:#e0e0e0; color:#000 } div.context { padding:10px 0; overflow:hidden; } div.context ol { padding-left:30px; margin:0 10px; list-style-position: inside; } div.context ol li { font-family:monospace; white-space:pre; color:#777; cursor:pointer; padding-left: 2px; } div.context ol li pre { display:inline; } div.context ol.context-line li { color:#464646; background-color:#dfdfdf; padding: 3px 2px; } div.context ol.context-line li span { position:absolute; right:32px; } .user div.context ol.context-line li { background-color:#bbb; color:#000; } .user div.context ol li { color:#666; } div.commands, summary.commands { margin-left: 40px; } div.commands a, summary.commands { color:#555; text-decoration:none; } .user div.commands a { color: black; } #summary { background: #ffc; } #summary h2 { font-weight: normal; color: #666; } #explanation { background:#eee; } #template, #template-not-exist { background:#f6f6f6; } #template-not-exist ul { margin: 0 0 10px 20px; } #template-not-exist .postmortem-section { margin-bottom: 3px; } #unicode-hint { background:#eee; } #traceback { background:#eee; } #requestinfo { background:#f6f6f6; padding-left:120px; } #summary table { border:none; background:transparent; } #requestinfo h2, #requestinfo h3 { position:relative; margin-left:-100px; } #requestinfo h3 { margin-bottom:-1em; } .error { background: #ffc; } .specific { color:#cc3300; font-weight:bold; } h2 span.commands { font-size:.7em; font-weight:normal; } span.commands a:link {color:#5E5694;} pre.exception_value { font-family: sans-serif; color: #575757; font-size: 1.5em; margin: 10px 0 10px 0; } .append-bottom { margin-bottom: 10px; } .fname { user-select: all; } </style> <script> function hideAll(elems) { for (var e = 0; e < elems.length; e++) { elems[e].style.display = 'none'; } } window.onload = function() { hideAll(document.querySelectorAll('ol.pre-context')); hideAll(document.querySelectorAll('ol.post-context')); hideAll(document.querySelectorAll('div.pastebin')); } function toggle() { for (var i = 0; i < arguments.length; i++) { var e = document.getElementById(arguments[i]); if (e) { e.style.display = e.style.display == 'none' ? 'block': 'none'; } } return false; } function switchPastebinFriendly(link) { s1 = "Switch to copy-and-paste view"; s2 = "Switch back to interactive view"; link.textContent = link.textContent.trim() == s1 ? s2: s1; toggle('browserTraceback', 'pastebinTraceback'); return false; } </script> </head> <body> <div id="summary"> <h1>ValueError at /ukstagram/posts/</h1> <pre class="exception_value">Cannot assign "<django.contrib.auth.models.AnonymousUser object at 0x0000012F72D73C10>": "Post.author" must be a "User" instance.</pre> <table class="meta"> <tr> <th>Request Method:</th> <td>POST</td> </tr> <tr> <th>Request URL:</th> <td>http://localhost:8000/ukstagram/posts/</td> </tr> <tr> <th>Django Version:</th> <td>4.0.4</td> </tr> <tr> <th>Exception Type:</th> <td>ValueError</td> </tr> <tr> <th>Exception Value:</th> <td><pre>Cannot assign "<django.contrib.auth.models.AnonymousUser object at 0x0000012F72D73C10>": "Post.author" must be a "User" instance.</pre></td> </tr> <tr> <th>Exception Location:</th> <td><span class="fname">C:\Users\cswoo\.conda\envs\drf\lib\site-packages\django\db\models\fields\related_descriptors.py</span>, line 235, in __set__</td> </tr> <tr> <th>Python Executable:</th> <td>C:\Users\cswoo\.conda\envs\drf\python.exe</td> </tr> <tr> <th>Python Version:</th> <td>3.8.12</td> </tr> <tr> <th>Python Path:</th> <td><pre>['C:\\Users\\cswoo\\OneDrive\\Documents\\DRF', 'C:\\Users\\cswoo\\.conda\\envs\\drf\\python38.zip', 'C:\\Users\\cswoo\\.conda\\envs\\drf\\DLLs', 'C:\\Users\\cswoo\\.conda\\envs\\drf\\lib', 'C:\\Users\\cswoo\\.conda\\envs\\drf', 'C:\\Users\\cswoo\\AppData\\Roaming\\Python\\Python38\\site-packages', 'C:\\Users\\cswoo\\.conda\\envs\\drf\\lib\\site-packages']</pre></td> </tr> <tr> <th>Server time:</th> <td>Fri, 22 Apr 2022 19:48:09 +0900</td> </tr> </table> </div> <div id="traceback"> <h2>Traceback <span class="commands"><a href="#" onclick="return switchPastebinFriendly(this);"> Switch to copy-and-paste view</a></span> </h2> <div id="browserTraceback"> <ul class="traceback"> <li class="frame django"> <code class="fname">C:\Users\cswoo\.conda\envs\drf\lib\site-packages\django\core\handlers\exception.py</code>, line 55, in inner <div class="context" id="c1303298475648"> <ol start="48" class="pre-context" id="pre1303298475648"> <li onclick="toggle('pre1303298475648', 'post1303298475648')"><pre></pre></li> <li onclick="toggle('pre1303298475648', 'post1303298475648')"><pre> return inner</pre></li> <li onclick="toggle('pre1303298475648', 'post1303298475648')"><pre> else:</pre></li> <li onclick="toggle('pre1303298475648', 'post1303298475648')"><pre></pre></li> <li onclick="toggle('pre1303298475648', 'post1303298475648')"><pre> @wraps(get_response)</pre></li> <li onclick="toggle('pre1303298475648', 'post1303298475648')"><pre> def inner(request):</pre></li> <li onclick="toggle('pre1303298475648', 'post1303298475648')"><pre> try:</pre></li> </ol> <ol start="55" class="context-line"> <li onclick="toggle('pre1303298475648', 'post1303298475648')"><pre> response = get_response(request)</pre> <span>…</span></li> </ol> <ol start='56' class="post-context" id="post1303298475648"> <li onclick="toggle('pre1303298475648', 'post1303298475648')"><pre> except Exception as exc:</pre></li> <li onclick="toggle('pre1303298475648', 'post1303298475648')"><pre> response = response_for_exception(request, exc)</pre></li> <li onclick="toggle('pre1303298475648', 'post1303298475648')"><pre> return response</pre></li> <li onclick="toggle('pre1303298475648', 'post1303298475648')"><pre></pre></li> <li onclick="toggle('pre1303298475648', 'post1303298475648')"><pre> return inner</pre></li> <li onclick="toggle('pre1303298475648', 'post1303298475648')"><pre></pre></li> </ol> </div> <details> <summary class="commands">Local vars</summary> <table class="vars" id="v1303298475648"> <thead> <tr> <th>Variable</th> <th>Value</th> </tr> </thead> <tbody> <tr> <td>exc</td> <td class="code"><pre>ValueError('Cannot assign "<django.contrib.auth.models.AnonymousUser object at 0x0000012F72D73C10>": "Post.author" must be a "User" instance.')< /pre></td> </tr> <tr> <td>get_response</td> <td class="code"><pre><bound method BaseHandler._get_response of <django.core.handlers.wsgi.WSGIHandler object at 0x0000012F711EE7C0>></pre></td> </tr> <tr> <td>request</td> <td class="code"><pre><WSGIRequest: POST '/ukstagram/posts/'></pre></td> </tr> </tbody> </table> </details> </li> <li class="frame django"> <code class="fname">C:\Users\cswoo\.conda\envs\drf\lib\site-packages\django\core\handlers\base.py</code>, line 197, in _get_response <div class="context" id="c1303298474624"> <ol start="190" class="pre-context" id="pre1303298474624"> <li onclick="toggle('pre1303298474624', 'post1303298474624')"><pre></pre></li> <li onclick="toggle('pre1303298474624', 'post1303298474624')"><pre> if response is None:</pre></li> <li onclick="toggle('pre1303298474624', 'post1303298474624')"><pre> wrapped_callback = self.make_view_atomic(callback)</pre></li> <li onclick="toggle('pre1303298474624', 'post1303298474624')"><pre> # If it is an asynchronous view, run it in a subthread.</pre></li> <li onclick="toggle('pre1303298474624', 'post1303298474624')"><pre> if asyncio.iscoroutinefunction(wrapped_callback):</pre></li> <li onclick="toggle('pre1303298474624', 'post1303298474624')"><pre> wrapped_callback = async_to_sync(wrapped_callback)</pre></li> <li onclick="toggle('pre1303298474624', 'post1303298474624')"><pre> try:</pre></li> </ol> <ol start="197" class="context-line"> <li onclick="toggle('pre1303298474624', 'post1303298474624')"><pre> response = wrapped_callback(request, *callback_args, **callback_kwargs)</pre> <span>…</span></li> </ol> <ol start='198' class="post-context" id="post1303298474624"> <li onclick="toggle('pre1303298474624', 'post1303298474624')"><pre> except Exception as e:</pre></li> <li onclick="toggle('pre1303298474624', 'post1303298474624')"><pre> response = self.process_exception_by_middleware(e, request)</pre></li> <li onclick="toggle('pre1303298474624', 'post1303298474624')"><pre> if response is None:</pre></li> <li onclick="toggle('pre1303298474624', 'post1303298474624')"><pre> raise</pre></li> <li onclick="toggle('pre1303298474624', 'post1303298474624')"><pre></pre></li> <li onclick="toggle('pre1303298474624', 'post1303298474624')"><pre> # Complain if the view returned None (a common error).</pre></li> </ol> </div> <details> <summary class="commands">Local vars</summary> <table class="vars" id="v1303298474624"> <thead> <tr> <th>Variable</th> <th>Value</th> </tr> </thead> <tbody> <tr> <td>callback</td> <td class="code"><pre><function PostViewSet at 0x0000012F72648940></pre></td> </tr> <tr> <td>callback_args</td> <td class="code"><pre>()</pre></td> </tr> <tr> <td>callback_kwargs</td> <td class="code"><pre>{}</pre></td> </tr> <tr> <td>middleware_method</td> <td class="code"><pre><bound method CsrfViewMiddleware.process_view of <CsrfViewMiddleware get_response=convert_exception_to_response.<locals>.inner>></pre></td> </tr> <tr> <td>request</td> <td class="code"><pre><WSGIRequest: POST '/ukstagram/posts/'></pre></td> </tr> <tr> <td>response</td> <td class="code"><pre>None</pre></td> </tr> <tr> <td>self</td> <td class="code"><pre><django.core.handlers.wsgi.WSGIHandler object at 0x0000012F711EE7C0></pre></td> </tr> <tr> <td>wrapped_callback</td> <td class="code"><pre><function PostViewSet at 0x0000012F72648940></pre></td> </tr> </tbody> </table> </details> </li> <li class="frame django"> <code class="fname">C:\Users\cswoo\.conda\envs\drf\lib\site-packages\django\views\decorators\csrf.py</code>, line 54, in wrapped_view <div class="context" id="c1303298477888"> <ol start="47" class="pre-context" id="pre1303298477888"> <li onclick="toggle('pre1303298477888', 'post1303298477888')"><pre></pre></li> <li onclick="toggle('pre1303298477888', 'post1303298477888')"><pre></pre></li> <li onclick="toggle('pre1303298477888', 'post1303298477888')"><pre>def csrf_exempt(view_func):</pre></li> <li onclick="toggle('pre1303298477888', 'post1303298477888')"><pre> """Mark a view function as being exempt from the CSRF view protection."""</pre></li> <li onclick="toggle('pre1303298477888', 'post1303298477888')"><pre> # view_func.csrf_exempt = True would also work, but decorators are nicer</pre></li> <li onclick="toggle('pre1303298477888', 'post1303298477888')"><pre> # if they don't have side effects, so return a new function.</pre></li> <li onclick="toggle('pre1303298477888', 'post1303298477888')"><pre> def wrapped_view(*args, **kwargs):</pre></li> </ol> <ol start="54" class="context-line"> <li onclick="toggle('pre1303298477888', 'post1303298477888')"><pre> return view_func(*args, **kwargs)</pre> <span>…</span></li> </ol> <ol start='55' class="post-context" id="post1303298477888"> <li onclick="toggle('pre1303298477888', 'post1303298477888')"><pre></pre></li> <li onclick="toggle('pre1303298477888', 'post1303298477888')"><pre> wrapped_view.csrf_exempt = True</pre></li> <li onclick="toggle('pre1303298477888', 'post1303298477888')"><pre> return wraps(view_func)(wrapped_view)</pre></li> </ol> </div> <details> <summary class="commands">Local vars</summary> <table class="vars" id="v1303298477888"> <thead> <tr> <th>Variable</th> <th>Value</th> </tr> </thead> <tbody> <tr> <td>args</td> <td class="code"><pre>(<WSGIRequest: POST '/ukstagram/posts/'>,)</pre></td> </tr> <tr> <td>kwargs</td> <td class="code"><pre>{}</pre></td> </tr> <tr> <td>view_func</td> <td class="code"><pre><function PostViewSet at 0x0000012F718C4700></pre></td> </tr> </tbody> </table> </details> </li> <li class="frame user"> <code class="fname">C:\Users\cswoo\.conda\envs\drf\lib\site-packages\rest_framework\viewsets.py</code>, line 125, in view <div class="context" id="c1303298475328"> <ol start="118" class="pre-context" id="pre1303298475328"> <li onclick="toggle('pre1303298475328', 'post1303298475328')"><pre> setattr(self, method, handler)</pre></li> <li onclick="toggle('pre1303298475328', 'post1303298475328')"><pre></pre></li> <li onclick="toggle('pre1303298475328', 'post1303298475328')"><pre> self.request = request</pre></li> <li onclick="toggle('pre1303298475328', 'post1303298475328')"><pre> self.args = args</pre></li> <li onclick="toggle('pre1303298475328', 'post1303298475328')"><pre> self.kwargs = kwargs</pre></li> <li onclick="toggle('pre1303298475328', 'post1303298475328')"><pre></pre></li> <li onclick="toggle('pre1303298475328', 'post1303298475328')"><pre> # And continue as usual</pre></li> </ol> <ol start="125" class="context-line"> <li onclick="toggle('pre1303298475328', 'post1303298475328')"><pre> return self.dispatch(request, *args, **kwargs)</pre> <span>…</span></li> </ol> <ol start='126' class="post-context" id="post1303298475328"> <li onclick="toggle('pre1303298475328', 'post1303298475328')"><pre></pre></li> <li onclick="toggle('pre1303298475328', 'post1303298475328')"><pre> # take name and docstring from class</pre></li> <li onclick="toggle('pre1303298475328', 'post1303298475328')"><pre> update_wrapper(view, cls, updated=())</pre></li> <li onclick="toggle('pre1303298475328', 'post1303298475328')"><pre></pre></li> <li onclick="toggle('pre1303298475328', 'post1303298475328')"><pre> # and possible attributes set by decorators</pre></li> <li onclick="toggle('pre1303298475328', 'post1303298475328')"><pre> # like csrf_exempt from dispatch</pre></li> </ol> </div> <details> <summary class="commands">Local vars</summary> <table class="vars" id="v1303298475328"> <thead> <tr> <th>Variable</th> <th>Value</th> </tr> </thead> <tbody> <tr> <td>action</td> <td class="code"><pre>'list'</pre></td> </tr> <tr> <td>actions</td> <td class="code"><pre>{'get': 'list', 'head': 'list', 'post': 'create'}</pre></td> </tr> <tr> <td>args</td> <td class="code"><pre>()</pre></td> </tr> <tr> <td>cls</td> <td class="code"><pre><class 'ukstagram.views.PostViewSet'></pre></td> </tr> <tr> <td>handler</td> <td class="code"><pre><bound method ListModelMixin.list of <ukstagram.views.PostViewSet object at 0x0000012F72D73520>></pre></td> </tr> <tr> <td>initkwargs</td> <td class="code"><pre>{'basename': 'posts', 'detail': False, 'suffix': 'List'}</pre></td> </tr> <tr> <td>kwargs</td> <td class="code"><pre>{}</pre></td> </tr> <tr> <td>method</td> <td class="code"><pre>'head'</pre></td> </tr> <tr> <td>request</td> <td class="code"><pre><WSGIRequest: POST '/ukstagram/posts/'></pre></td> </tr> <tr> <td>self</td> <td class="code"><pre><ukstagram.views.PostViewSet object at 0x0000012F72D73520></pre></td> </tr> </tbody> </table> </details> </li> <li class="frame user"> <code class="fname">C:\Users\cswoo\.conda\envs\drf\lib\site-packages\rest_framework\views.py</code>, line 509, in dispatch <div class="context" id="c1303298477120"> <ol start="502" class="pre-context" id="pre1303298477120"> <li onclick="toggle('pre1303298477120', 'post1303298477120')"><pre> self.http_method_not_allowed)</pre></li> <li onclick="toggle('pre1303298477120', 'post1303298477120')"><pre> else:</pre></li> <li onclick="toggle('pre1303298477120', 'post1303298477120')"><pre> handler = self.http_method_not_allowed</pre></li> <li onclick="toggle('pre1303298477120', 'post1303298477120')"><pre></pre></li> <li onclick="toggle('pre1303298477120', 'post1303298477120')"><pre> response = handler(request, *args, **kwargs)</pre></li> <li onclick="toggle('pre1303298477120', 'post1303298477120')"><pre></pre></li> <li onclick="toggle('pre1303298477120', 'post1303298477120')"><pre> except Exception as exc:</pre></li> </ol> <ol start="509" class="context-line"> <li onclick="toggle('pre1303298477120', 'post1303298477120')"><pre> response = self.handle_exception(exc)</pre> <span>…</span></li> </ol> <ol start='510' class="post-context" id="post1303298477120"> <li onclick="toggle('pre1303298477120', 'post1303298477120')"><pre></pre></li> <li onclick="toggle('pre1303298477120', 'post1303298477120')"><pre> self.response = self.finalize_response(request, response, *args, **kwargs)</pre></li> <li onclick="toggle('pre1303298477120', 'post1303298477120')"><pre> return self.response</pre></li> <li onclick="toggle('pre1303298477120', 'post1303298477120')"><pre></pre></li> <li onclick="toggle('pre1303298477120', 'post1303298477120')"><pre> def options(self, request, *args, **kwargs):</pre></li> <li onclick="toggle('pre1303298477120', 'post1303298477120')"><pre> """</pre></li> </ol> </div> <details> <summary class="commands">Local vars</summary> <table class="vars" id="v1303298477120"> <thead> <tr> <th>Variable</th> <th>Value</th> </tr> </thead> <tbody> <tr> <td>args</td> <td class="code"><pre>()</pre></td> </tr> <tr> <td>handler</td> <td class="code"><pre><bound method CreateModelMixin.create of <ukstagram.views.PostViewSet object at 0x0000012F72D73520>></pre></td> </tr> <tr> <td>kwargs</td> <td class="code"><pre>{}</pre></td> </tr> <tr> <td>request</td> <td class="code"><pre><rest_framework.request.Request: POST '/ukstagram/posts/'></pre></td> </tr> <tr> <td>self</td> <td class="code"><pre><ukstagram.views.PostViewSet object at 0x0000012F72D73520></pre></td> </tr> </tbody> </table> </details> </li> <li class="frame user"> <code class="fname">C:\Users\cswoo\.conda\envs\drf\lib\site-packages\rest_framework\views.py</code>, line 469, in handle_exception <div class="context" id="c1303297323328"> <ol start="462" class="pre-context" id="pre1303297323328"> <li onclick="toggle('pre1303297323328', 'post1303297323328')"><pre></pre></li> <li onclick="toggle('pre1303297323328', 'post1303297323328')"><pre> exception_handler = self.get_exception_handler()</pre></li> <li onclick="toggle('pre1303297323328', 'post1303297323328')"><pre></pre></li> <li onclick="toggle('pre1303297323328', 'post1303297323328')"><pre> context = self.get_exception_handler_context()</pre></li> <li onclick="toggle('pre1303297323328', 'post1303297323328')"><pre> response = exception_handler(exc, context)</pre></li> <li onclick="toggle('pre1303297323328', 'post1303297323328')"><pre></pre></li> <li onclick="toggle('pre1303297323328', 'post1303297323328')"><pre> if response is None:</pre></li> </ol> <ol start="469" class="context-line"> <li onclick="toggle('pre1303297323328', 'post1303297323328')"><pre> self.raise_uncaught_exception(exc)</pre> <span>…</span></li> </ol> <ol start='470' class="post-context" id="post1303297323328"> <li onclick="toggle('pre1303297323328', 'post1303297323328')"><pre></pre></li> <li onclick="toggle('pre1303297323328', 'post1303297323328')"><pre> response.exception = True</pre></li> <li onclick="toggle('pre1303297323328', 'post1303297323328')"><pre> return response</pre></li> <li onclick="toggle('pre1303297323328', 'post1303297323328')"><pre></pre></li> <li onclick="toggle('pre1303297323328', 'post1303297323328')"><pre> def raise_uncaught_exception(self, exc):</pre></li> <li onclick="toggle('pre1303297323328', 'post1303297323328')"><pre> if settings.DEBUG:</pre></li> </ol> </div> <details> <summary class="commands">Local vars</summary> <table class="vars" id="v1303297323328"> <thead> <tr> <th>Variable</th> <th>Value</th> </tr> </thead> <tbody> <tr> <td>context</td> <td class="code"><pre>{'args': (), 'kwargs': {}, 'request': <rest_framework.request.Request: POST '/ukstagram/posts/'>, 'view': <ukstagram.views.PostViewSet object at 0x0000012F72D73520>}</pre></td> </tr> <tr> <td>exc</td> <td class="code"><pre>ValueError('Cannot assign "<django.contrib.auth.models.AnonymousUser object at 0x0000012F72D73C10>": "Post.author" must be a "User" instance.')< /pre></td> </tr> <tr> <td>exception_handler</td> <td class="code"><pre><function exception_handler at 0x0000012F71E2B9D0></pre></td> </tr> <tr> <td>response</td> <td class="code"><pre>None</pre></td> </tr> <tr> <td>self</td> <td class="code"><pre><ukstagram.views.PostViewSet object at 0x0000012F72D73520></pre></td> </tr> </tbody> </table> </details> </li> <li class="frame user"> <code class="fname">C:\Users\cswoo\.conda\envs\drf\lib\site-packages\rest_framework\views.py</code>, line 480, in raise_uncaught_exception <div class="context" id="c1303297323776"> <ol start="473" class="pre-context" id="pre1303297323776"> <li onclick="toggle('pre1303297323776', 'post1303297323776')"><pre></pre></li> <li onclick="toggle('pre1303297323776', 'post1303297323776')"><pre> def raise_uncaught_exception(self, exc):</pre></li> <li onclick="toggle('pre1303297323776', 'post1303297323776')"><pre> if settings.DEBUG:</pre></li> <li onclick="toggle('pre1303297323776', 'post1303297323776')"><pre> request = self.request</pre></li> <li onclick="toggle('pre1303297323776', 'post1303297323776')"><pre> renderer_format = getattr(request.accepted_renderer, 'format')</pre></li> <li onclick="toggle('pre1303297323776', 'post1303297323776')"><pre> use_plaintext_traceback = renderer_format not in ('html', 'api', 'admin')</pre></li> <li onclick="toggle('pre1303297323776', 'post1303297323776')"><pre> request.force_plaintext_errors(use_plaintext_traceback)</pre></li> </ol> <ol start="480" class="context-line"> <li onclick="toggle('pre1303297323776', 'post1303297323776')"><pre> raise exc</pre> <span>…</span></li> </ol> <ol start='481' class="post-context" id="post1303297323776"> <li onclick="toggle('pre1303297323776', 'post1303297323776')"><pre></pre></li> <li onclick="toggle('pre1303297323776', 'post1303297323776')"><pre> # Note: Views are made CSRF exempt from within `as_view` as to prevent</pre></li> <li onclick="toggle('pre1303297323776', 'post1303297323776')"><pre> # accidental removal of this exemption in cases where `dispatch` needs to</pre></li> <li onclick="toggle('pre1303297323776', 'post1303297323776')"><pre> # be overridden.</pre></li> <li onclick="toggle('pre1303297323776', 'post1303297323776')"><pre> def dispatch(self, request, *args, **kwargs):</pre></li> <li onclick="toggle('pre1303297323776', 'post1303297323776')"><pre> """</pre></li> </ol> </div> <details> <summary class="commands">Local vars</summary> <table class="vars" id="v1303297323776"> <thead> <tr> <th>Variable</th> <th>Value</th> </tr> </thead> <tbody> <tr> <td>exc</td> <td class="code"><pre>ValueError('Cannot assign "<django.contrib.auth.models.AnonymousUser object at 0x0000012F72D73C10>": "Post.author" must be a "User" instance.')< /pre></td> </tr> <tr> <td>renderer_format</td> <td class="code"><pre>'json'</pre></td> </tr> <tr> <td>request</td> <td class="code"><pre><rest_framework.request.Request: POST '/ukstagram/posts/'></pre></td> </tr> <tr> <td>self</td> <td class="code"><pre><ukstagram.views.PostViewSet object at 0x0000012F72D73520></pre></td> </tr> <tr> <td>use_plaintext_traceback</td> <td class="code"><pre>True</pre></td> </tr> </tbody> </table> </details> </li> <li class="frame user"> <code class="fname">C:\Users\cswoo\.conda\envs\drf\lib\site-packages\rest_framework\views.py</code>, line 506, in dispatch <div class="context" id="c1303297323136"> <ol start="499" class="pre-context" id="pre1303297323136"> <li onclick="toggle('pre1303297323136', 'post1303297323136')"><pre> # Get the appropriate handler method</pre></li> <li onclick="toggle('pre1303297323136', 'post1303297323136')"><pre> if request.method.lower() in self.http_method_names:</pre></li> <li onclick="toggle('pre1303297323136', 'post1303297323136')"><pre> handler = getattr(self, request.method.lower(),</pre></li> <li onclick="toggle('pre1303297323136', 'post1303297323136')"><pre> self.http_method_not_allowed)</pre></li> <li onclick="toggle('pre1303297323136', 'post1303297323136')"><pre> else:</pre></li> <li onclick="toggle('pre1303297323136', 'post1303297323136')"><pre> handler = self.http_method_not_allowed</pre></li> <li onclick="toggle('pre1303297323136', 'post1303297323136')"><pre></pre></li> </ol> <ol start="506" class="context-line"> <li onclick="toggle('pre1303297323136', 'post1303297323136')"><pre> response = handler(request, *args, **kwargs)</pre> <span>…</span></li> </ol> <ol start='507' class="post-context" id="post1303297323136"> <li onclick="toggle('pre1303297323136', 'post1303297323136')"><pre></pre></li> <li onclick="toggle('pre1303297323136', 'post1303297323136')"><pre> except Exception as exc:</pre></li> <li onclick="toggle('pre1303297323136', 'post1303297323136')"><pre> response = self.handle_exception(exc)</pre></li> <li onclick="toggle('pre1303297323136', 'post1303297323136')"><pre></pre></li> <li onclick="toggle('pre1303297323136', 'post1303297323136')"><pre> self.response = self.finalize_response(request, response, *args, **kwargs)</pre></li> <li onclick="toggle('pre1303297323136', 'post1303297323136')"><pre> return self.response</pre></li> </ol> </div> <details> <summary class="commands">Local vars</summary> <table class="vars" id="v1303297323136"> <thead> <tr> <th>Variable</th> <th>Value</th> </tr> </thead> <tbody> <tr> <td>args</td> <td class="code"><pre>()</pre></td> </tr> <tr> <td>handler</td> <td class="code"><pre><bound method CreateModelMixin.create of <ukstagram.views.PostViewSet object at 0x0000012F72D73520>></pre></td> </tr> <tr> <td>kwargs</td> <td class="code"><pre>{}</pre></td> </tr> <tr> <td>request</td> <td class="code"><pre><rest_framework.request.Request: POST '/ukstagram/posts/'></pre></td> </tr> <tr> <td>self</td> <td class="code"><pre><ukstagram.views.PostViewSet object at 0x0000012F72D73520></pre></td> </tr> </tbody> </table> </details> </li> <li class="frame user"> <code class="fname">C:\Users\cswoo\.conda\envs\drf\lib\site-packages\rest_framework\mixins.py</code>, line 19, in create <div class="context" id="c1303297323456"> <ol start="12" class="pre-context" id="pre1303297323456"> <li onclick="toggle('pre1303297323456', 'post1303297323456')"><pre>class CreateModelMixin:</pre></li> <li onclick="toggle('pre1303297323456', 'post1303297323456')"><pre> """</pre></li> <li onclick="toggle('pre1303297323456', 'post1303297323456')"><pre> Create a model instance.</pre></li> <li onclick="toggle('pre1303297323456', 'post1303297323456')"><pre> """</pre></li> <li onclick="toggle('pre1303297323456', 'post1303297323456')"><pre> def create(self, request, *args, **kwargs):</pre></li> <li onclick="toggle('pre1303297323456', 'post1303297323456')"><pre> serializer = self.get_serializer(data=request.data)</pre></li> <li onclick="toggle('pre1303297323456', 'post1303297323456')"><pre> serializer.is_valid(raise_exception=True)</pre></li> </ol> <ol start="19" class="context-line"> <li onclick="toggle('pre1303297323456', 'post1303297323456')"><pre> self.perform_create(serializer)</pre> <span>…</span></li> </ol> <ol start='20' class="post-context" id="post1303297323456"> <li onclick="toggle('pre1303297323456', 'post1303297323456')"><pre> headers = self.get_success_headers(serializer.data)</pre></li> <li onclick="toggle('pre1303297323456', 'post1303297323456')"><pre> return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers)</pre></li> <li onclick="toggle('pre1303297323456', 'post1303297323456')"><pre></pre></li> <li onclick="toggle('pre1303297323456', 'post1303297323456')"><pre> def perform_create(self, serializer):</pre></li> <li onclick="toggle('pre1303297323456', 'post1303297323456')"><pre> serializer.save()</pre></li> <li onclick="toggle('pre1303297323456', 'post1303297323456')"><pre></pre></li> </ol> </div> <details> <summary class="commands">Local vars</summary> <table class="vars" id="v1303297323456"> <thead> <tr> <th>Variable</th> <th>Value</th> </tr> </thead> <tbody> <tr> <td>args</td> <td class="code"><pre>()</pre></td> </tr> <tr> <td>kwargs</td> <td class="code"><pre>{}</pre></td> </tr> <tr> <td>request</td> <td class="code"><pre><rest_framework.request.Request: POST '/ukstagram/posts/'></pre></td> </tr> <tr> <td>self</td> <td class="code"><pre><ukstagram.views.PostViewSet object at 0x0000012F72D73520></pre></td> </tr> <tr> <td>serializer</td> <td class="code"><pre>PostSerializer(context={'request': <rest_framework.request.Request: POST '/ukstagram/posts/'>, 'format': None, 'view': <ukstagram.views.PostV iewSet object>}, data={'message': '23th post', 'is_public': 'true'}): pk = IntegerField(label='ID', read_only=True) username = ReadOnlyField(source='author.username') message = CharField(style={'base_template': 'textarea.html'}) created_at = DateTimeField(read_only=True) updated_at = DateTimeField(read_only=True) is_public = BooleanField(required=False)</pre></td> </tr> </tbody> </table> </details> </li> <li class="frame user"> <code class="fname">C:\Users\cswoo\OneDrive\Documents\DRF\ukstagram\views.py</code>, line 46, in perform_create <div class="context" id="c1303297326656"> <ol start="39" class="pre-context" id="pre1303297326656"> <li onclick="toggle('pre1303297326656', 'post1303297326656')"><pre> # serializer = self.get_serializer(data=request.data)</pre></li> <li onclick="toggle('pre1303297326656', 'post1303297326656')"><pre> # if serializer.is_valid():</pre></li> <li onclick="toggle('pre1303297326656', 'post1303297326656')"><pre> # serializer.save(author=request.user)</pre></li> <li onclick="toggle('pre1303297326656', 'post1303297326656')"><pre> # return Response(serializer.data, status=status.HTTP_201_CREATED)</pre></li> <li onclick="toggle('pre1303297326656', 'post1303297326656')"><pre> # return Response(status=status.HTTP_400_BAD_REQUEST)</pre></li> <li onclick="toggle('pre1303297326656', 'post1303297326656')"><pre></pre></li> <li onclick="toggle('pre1303297326656', 'post1303297326656')"><pre> def perform_create(self, serializer):</pre></li> </ol> <ol start="46" class="context-line"> <li onclick="toggle('pre1303297326656', 'post1303297326656')"><pre> serializer.save(author=self.request.user)</pre> <span>…</span></li> </ol> <ol start='47' class="post-context" id="post1303297326656"> <li onclick="toggle('pre1303297326656', 'post1303297326656')"><pre></pre></li> <li onclick="toggle('pre1303297326656', 'post1303297326656')"><pre> @action(detail=False, methods=['GET'])</pre></li> <li onclick="toggle('pre1303297326656', 'post1303297326656')"><pre> def public(self, request):</pre></li> <li onclick="toggle('pre1303297326656', 'post1303297326656')"><pre> qs = self.get_queryset().filter(is_public=True)</pre></li> <li onclick="toggle('pre1303297326656', 'post1303297326656')"><pre> serializer = self.get_serializer(instance=qs, many=True)</pre></li> <li onclick="toggle('pre1303297326656', 'post1303297326656')"><pre> return Response(serializer.data)</pre></li> </ol> </div> <details> <summary class="commands">Local vars</summary> <table class="vars" id="v1303297326656"> <thead> <tr> <th>Variable</th> <th>Value</th> </tr> </thead> <tbody> <tr> <td>self</td> <td class="code"><pre><ukstagram.views.PostViewSet object at 0x0000012F72D73520></pre></td> </tr> <tr> <td>serializer</td> <td class="code"><pre>PostSerializer(context={'request': <rest_framework.request.Request: POST '/ukstagram/posts/'>, 'format': None, 'view': <ukstagram.views.PostV iewSet object>}, data={'message': '23th post', 'is_public': 'true'}): pk = IntegerField(label='ID', read_only=True) username = ReadOnlyField(source='author.username') message = CharField(style={'base_template': 'textarea.html'}) created_at = DateTimeField(read_only=True) updated_at = DateTimeField(read_only=True) is_public = BooleanField(required=False)</pre></td> </tr> </tbody> </table> </details> </li> <li class="frame user"> <code class="fname">C:\Users\cswoo\.conda\envs\drf\lib\site-packages\rest_framework\serializers.py</code>, line 212, in save <div class="context" id="c1303297323584"> <ol start="205" class="pre-context" id="pre1303297323584"> <li onclick="toggle('pre1303297323584', 'post1303297323584')"><pre></pre></li> <li onclick="toggle('pre1303297323584', 'post1303297323584')"><pre> if self.instance is not None:</pre></li> <li onclick="toggle('pre1303297323584', 'post1303297323584')"><pre> self.instance = self.update(self.instance, validated_data)</pre></li> <li onclick="toggle('pre1303297323584', 'post1303297323584')"><pre> assert self.instance is not None, (</pre></li> <li onclick="toggle('pre1303297323584', 'post1303297323584')"><pre> '`update()` did not return an object instance.'</pre></li> <li onclick="toggle('pre1303297323584', 'post1303297323584')"><pre> )</pre></li> <li onclick="toggle('pre1303297323584', 'post1303297323584')"><pre> else:</pre></li> </ol> <ol start="212" class="context-line"> <li onclick="toggle('pre1303297323584', 'post1303297323584')"><pre> self.instance = self.create(validated_data)</pre> <span>…</span></li> </ol> <ol start='213' class="post-context" id="post1303297323584"> <li onclick="toggle('pre1303297323584', 'post1303297323584')"><pre> assert self.instance is not None, (</pre></li> <li onclick="toggle('pre1303297323584', 'post1303297323584')"><pre> '`create()` did not return an object instance.'</pre></li> <li onclick="toggle('pre1303297323584', 'post1303297323584')"><pre> )</pre></li> <li onclick="toggle('pre1303297323584', 'post1303297323584')"><pre></pre></li> <li onclick="toggle('pre1303297323584', 'post1303297323584')"><pre> return self.instance</pre></li> <li onclick="toggle('pre1303297323584', 'post1303297323584')"><pre></pre></li> </ol> </div> <details> <summary class="commands">Local vars</summary> <table class="vars" id="v1303297323584"> <thead> <tr> <th>Variable</th> <th>Value</th> </tr> </thead> <tbody> <tr> <td>kwargs</td> <td class="code"><pre>{'author': <django.contrib.auth.models.AnonymousUser object at 0x0000012F72D73C10>}</pre></td> </tr> <tr> <td>self</td> <td class="code"><pre>PostSerializer(context={'request': <rest_framework.request.Request: POST '/ukstagram/posts/'>, 'format': None, 'view': <ukstagram.views.PostV iewSet object>}, data={'message': '23th post', 'is_public': 'true'}): pk = IntegerField(label='ID', read_only=True) username = ReadOnlyField(source='author.username') message = CharField(style={'base_template': 'textarea.html'}) created_at = DateTimeField(read_only=True) updated_at = DateTimeField(read_only=True) is_public = BooleanField(required=False)</pre></td> </tr> <tr> <td>validated_data</td> <td class="code"><pre>{'author': <django.contrib.auth.models.AnonymousUser object at 0x0000012F72D73C10>, 'is_public': True, 'message': '23th post'}</pre></td> </tr> </tbody> </table> </details> </li> <li class="frame user"> <code class="fname">C:\Users\cswoo\.conda\envs\drf\lib\site-packages\rest_framework\serializers.py</code>, line 962, in create <div class="context" id="c1303297326272"> <ol start="955" class="pre-context" id="pre1303297326272"> <li onclick="toggle('pre1303297326272', 'post1303297326272')"><pre> info = model_meta.get_field_info(ModelClass)</pre></li> <li onclick="toggle('pre1303297326272', 'post1303297326272')"><pre> many_to_many = {}</pre></li> <li onclick="toggle('pre1303297326272', 'post1303297326272')"><pre> for field_name, relation_info in info.relations.items():</pre></li> <li onclick="toggle('pre1303297326272', 'post1303297326272')"><pre> if relation_info.to_many and (field_name in validated_data):</pre></li> <li onclick="toggle('pre1303297326272', 'post1303297326272')"><pre> many_to_many[field_name] = validated_data.pop(field_name)</pre></li> <li onclick="toggle('pre1303297326272', 'post1303297326272')"><pre></pre></li> <li onclick="toggle('pre1303297326272', 'post1303297326272')"><pre> try:</pre></li> </ol> <ol start="962" class="context-line"> <li onclick="toggle('pre1303297326272', 'post1303297326272')"><pre> instance = ModelClass._default_manager.create(**validated_data)</pre> <span>…</span></li> </ol> <ol start='963' class="post-context" id="post1303297326272"> <li onclick="toggle('pre1303297326272', 'post1303297326272')"><pre> except TypeError:</pre></li> <li onclick="toggle('pre1303297326272', 'post1303297326272')"><pre> tb = traceback.format_exc()</pre></li> <li onclick="toggle('pre1303297326272', 'post1303297326272')"><pre> msg = (</pre></li> <li onclick="toggle('pre1303297326272', 'post1303297326272')"><pre> 'Got a `TypeError` when calling `%s.%s.create()`. '</pre></li> <li onclick="toggle('pre1303297326272', 'post1303297326272')"><pre> 'This may be because you have a writable field on the '</pre></li> <li onclick="toggle('pre1303297326272', 'post1303297326272')"><pre> 'serializer class that is not a valid argument to '</pre></li> </ol> </div> <details> <summary class="commands">Local vars</summary> <table class="vars" id="v1303297326272"> <thead> <tr> <th>Variable</th> <th>Value</th> </tr> </thead> <tbody> <tr> <td>ModelClass</td> <td class="code"><pre><class 'ukstagram.models.Post'></pre></td> </tr> <tr> <td>field_name</td> <td class="code"><pre>'author'</pre></td> </tr> <tr> <td>info</td> <td class="code"><pre>FieldResult(pk=<django.db.models.fields.BigAutoField: id>, fields=OrderedDict([('message', <django.db.models.fields.TextField: message>), ('created_at', <d jango.db.models.fields.DateTimeField: created_at>), ('updated_at', <django.db.models.fields.DateTimeField: updated_at>), ('is_public', <django.db.models.fields.BooleanField: is_public>)]), forward_ relations=OrderedDict([('author', RelationInfo(model_field=<django.db.models.fields.related.ForeignKey: author>, related_model=<class 'django.contrib.auth.models.User'>, to_many=False, to_field=None, has_through_model=False, reverse=False))]), reverse_relations=OrderedDict(), fields_and_pk=OrderedDict([('pk', <django.db.models.fields.BigAutoField: id>), ('id', <django.db.models.fields.BigAutoField: i d>), ('message', <django.db.models.fields.TextField: message>), ('created_at', <django.db.models.fields.DateTimeField: created_at>), ('updated_at', <django.db.models.fields.DateTimeFie ld: updated_at>), ('is_public', <django.db.models.fields.BooleanField: is_public>)]), relations=OrderedDict([('author', RelationInfo(model_field=<django.db.models.fields.related.ForeignKey: author> , related_model=<class 'django.contrib.auth.models.User'>, to_many=False, to_field=None, has_through_model=False, reverse=False))]))</pre></td> </tr> <tr> <td>many_to_many</td> <td class="code"><pre>{}</pre></td> </tr> <tr> <td>relation_info</td> <td class="code"><pre>RelationInfo(model_field=<django.db.models.fields.related.ForeignKey: author>, related_model=<class 'django.contrib.auth.models.User'>, to_many=False, to_field=None, ha s_through_model=False, reverse=False)</pre></td> </tr> <tr> <td>self</td> <td class="code"><pre>PostSerializer(context={'request': <rest_framework.request.Request: POST '/ukstagram/posts/'>, 'format': None, 'view': <ukstagram.views.PostV iewSet object>}, data={'message': '23th post', 'is_public': 'true'}): pk = IntegerField(label='ID', read_only=True) username = ReadOnlyField(source='author.username') message = CharField(style={'base_template': 'textarea.html'}) created_at = DateTimeField(read_only=True) updated_at = DateTimeField(read_only=True) is_public = BooleanField(required=False)</pre></td> </tr> <tr> <td>validated_data</td> <td class="code"><pre>{'author': <django.contrib.auth.models.AnonymousUser object at 0x0000012F72D73C10>, 'is_public': True, 'message': '23th post'}</pre></td> </tr> </tbody> </table> </details> </li> <li class="frame django"> <code class="fname">C:\Users\cswoo\.conda\envs\drf\lib\site-packages\django\db\models\manager.py</code>, line 85, in manager_method <div class="context" id="c1303297323072"> <ol start="78" class="pre-context" id="pre1303297323072"> <li onclick="toggle('pre1303297323072', 'post1303297323072')"><pre> def check(self, **kwargs):</pre></li> <li onclick="toggle('pre1303297323072', 'post1303297323072')"><pre> return []</pre></li> <li onclick="toggle('pre1303297323072', 'post1303297323072')"><pre></pre></li> <li onclick="toggle('pre1303297323072', 'post1303297323072')"><pre> @classmethod</pre></li> <li onclick="toggle('pre1303297323072', 'post1303297323072')"><pre> def _get_queryset_methods(cls, queryset_class):</pre></li> <li onclick="toggle('pre1303297323072', 'post1303297323072')"><pre> def create_method(name, method):</pre></li> <li onclick="toggle('pre1303297323072', 'post1303297323072')"><pre> def manager_method(self, *args, **kwargs):</pre></li> </ol> <ol start="85" class="context-line"> <li onclick="toggle('pre1303297323072', 'post1303297323072')"><pre> return getattr(self.get_queryset(), name)(*args, **kwargs)</pre> <span>…</span></li> </ol> <ol start='86' class="post-context" id="post1303297323072"> <li onclick="toggle('pre1303297323072', 'post1303297323072')"><pre></pre></li> <li onclick="toggle('pre1303297323072', 'post1303297323072')"><pre> manager_method.__name__ = method.__name__</pre></li> <li onclick="toggle('pre1303297323072', 'post1303297323072')"><pre> manager_method.__doc__ = method.__doc__</pre></li> <li onclick="toggle('pre1303297323072', 'post1303297323072')"><pre> return manager_method</pre></li> <li onclick="toggle('pre1303297323072', 'post1303297323072')"><pre></pre></li> <li onclick="toggle('pre1303297323072', 'post1303297323072')"><pre> new_methods = {}</pre></li> </ol> </div> <details> <summary class="commands">Local vars</summary> <table class="vars" id="v1303297323072"> <thead> <tr> <th>Variable</th> <th>Value</th> </tr> </thead> <tbody> <tr> <td>args</td> <td class="code"><pre>()</pre></td> </tr> <tr> <td>kwargs</td> <td class="code"><pre>{'author': <django.contrib.auth.models.AnonymousUser object at 0x0000012F72D73C10>, 'is_public': True, 'message': '23th post'}</pre></td> </tr> <tr> <td>name</td> <td class="code"><pre>'create'</pre></td> </tr> <tr> <td>self</td> <td class="code"><pre><django.db.models.manager.Manager object at 0x0000012F726530D0></pre></td> </tr> </tbody> </table> </details> </li> <li class="frame django"> <code class="fname">C:\Users\cswoo\.conda\envs\drf\lib\site-packages\django\db\models\query.py</code>, line 512, in create <div class="context" id="c1303301874176"> <ol start="505" class="pre-context" id="pre1303301874176"> <li onclick="toggle('pre1303301874176', 'post1303301874176')"><pre> )</pre></li> <li onclick="toggle('pre1303301874176', 'post1303301874176')"><pre></pre></li> <li onclick="toggle('pre1303301874176', 'post1303301874176')"><pre> def create(self, **kwargs):</pre></li> <li onclick="toggle('pre1303301874176', 'post1303301874176')"><pre> """</pre></li> <li onclick="toggle('pre1303301874176', 'post1303301874176')"><pre> Create a new object with the given kwargs, saving it to the database</pre></li> <li onclick="toggle('pre1303301874176', 'post1303301874176')"><pre> and returning the created object.</pre></li> <li onclick="toggle('pre1303301874176', 'post1303301874176')"><pre> """</pre></li> </ol> <ol start="512" class="context-line"> <li onclick="toggle('pre1303301874176', 'post1303301874176')"><pre> obj = self.model(**kwargs)</pre> <span>…</span></li> </ol> <ol start='513' class="post-context" id="post1303301874176"> <li onclick="toggle('pre1303301874176', 'post1303301874176')"><pre> self._for_write = True</pre></li> <li onclick="toggle('pre1303301874176', 'post1303301874176')"><pre> obj.save(force_insert=True, using=self.db)</pre></li> <li onclick="toggle('pre1303301874176', 'post1303301874176')"><pre> return obj</pre></li> <li onclick="toggle('pre1303301874176', 'post1303301874176')"><pre></pre></li> <li onclick="toggle('pre1303301874176', 'post1303301874176')"><pre> def _prepare_for_bulk_create(self, objs):</pre></li> <li onclick="toggle('pre1303301874176', 'post1303301874176')"><pre> for obj in objs:</pre></li> </ol> </div> <details> <summary class="commands">Local vars</summary> <table class="vars" id="v1303301874176"> <thead> <tr> <th>Variable</th> <th>Value</th> </tr> </thead> <tbody> <tr> <td>kwargs</td> <td class="code"><pre>{'author': <django.contrib.auth.models.AnonymousUser object at 0x0000012F72D73C10>, 'is_public': True, 'message': '23th post'}</pre></td> </tr> <tr> <td>self</td> <td class="code"><pre><QuerySet [<Post: Post object (1)>, <Post: Post object (2)>, <Post: Post object (3)>, <Post: Post object (4)>, <Post: Post object (5)>, <Post: Post object (6)>, <Post: Post object (7)>, <Post: Post object (8)>, <Post: Post object (10)>, <Post: Post object (11)>, <Post: Post object (12)>, <Post: Post object (13)>, <Post: Post object (14)>, <Post: Post object (15)>, <Post: Post object (16)>, <Post: Post object (17)>, <Post: Post object (18)>, <Post: Post object (19)>, <Post: Post object (20)>, <Post: Post object (21)>, '.. .(remaining elements truncated)...']></pre></td> </tr> </tbody> </table> </details> </li> <li class="frame django"> <code class="fname">C:\Users\cswoo\.conda\envs\drf\lib\site-packages\django\db\models\base.py</code>, line 541, in __init__ <div class="context" id="c1303301877120"> <ol start="534" class="pre-context" id="pre1303301877120"> <li onclick="toggle('pre1303301877120', 'post1303301877120')"><pre></pre></li> <li onclick="toggle('pre1303301877120', 'post1303301877120')"><pre> if is_related_object:</pre></li> <li onclick="toggle('pre1303301877120', 'post1303301877120')"><pre> # If we are passed a related instance, set it using the</pre></li> <li onclick="toggle('pre1303301877120', 'post1303301877120')"><pre> # field.name instead of field.attname (e.g. "user" instead of</pre></li> <li onclick="toggle('pre1303301877120', 'post1303301877120')"><pre> # "user_id") so that the object gets properly cached (and type</pre></li> <li onclick="toggle('pre1303301877120', 'post1303301877120')"><pre> # checked) by the RelatedObjectDescriptor.</pre></li> <li onclick="toggle('pre1303301877120', 'post1303301877120')"><pre> if rel_obj is not _DEFERRED:</pre></li> </ol> <ol start="541" class="context-line"> <li onclick="toggle('pre1303301877120', 'post1303301877120')"><pre> _setattr(self, field.name, rel_obj)</pre> <span>…</span></li> </ol> <ol start='542' class="post-context" id="post1303301877120"> <li onclick="toggle('pre1303301877120', 'post1303301877120')"><pre> else:</pre></li> <li onclick="toggle('pre1303301877120', 'post1303301877120')"><pre> if val is not _DEFERRED:</pre></li> <li onclick="toggle('pre1303301877120', 'post1303301877120')"><pre> _setattr(self, field.attname, val)</pre></li> <li onclick="toggle('pre1303301877120', 'post1303301877120')"><pre></pre></li> <li onclick="toggle('pre1303301877120', 'post1303301877120')"><pre> if kwargs:</pre></li> <li onclick="toggle('pre1303301877120', 'post1303301877120')"><pre> property_names = opts._property_names</pre></li> </ol> </div> <details> <summary class="commands">Local vars</summary> <table class="vars" id="v1303301877120"> <thead> <tr> <th>Variable</th> <th>Value</th> </tr> </thead> <tbody> <tr> <td>_DEFERRED</td> <td class="code"><pre><Deferred field></pre></td> </tr> <tr> <td>__class__</td> <td class="code"><pre><class 'django.db.models.base.Model'></pre></td> </tr> <tr> <td>_setattr</td> <td class="code"><pre><built-in function setattr></pre></td> </tr> <tr> <td>args</td> <td class="code"><pre>()</pre></td> </tr> <tr> <td>cls</td> <td class="code"><pre><class 'ukstagram.models.Post'></pre></td> </tr> <tr> <td>field</td> <td class="code"><pre><django.db.models.fields.related.ForeignKey: author></pre></td> </tr> <tr> <td>fields_iter</td> <td class="code"><pre><tuple_iterator object at 0x0000012F72D73D60></pre></td> </tr> <tr> <td>is_related_object</td> <td class="code"><pre>True</pre></td> </tr> <tr> <td>kwargs</td> <td class="code"><pre>{'is_public': True, 'message': '23th post'}</pre></td> </tr> <tr> <td>opts</td> <td class="code"><pre><Options for Post></pre></td> </tr> <tr> <td>rel_obj</td> <td class="code"><pre><django.contrib.auth.models.AnonymousUser object at 0x0000012F72D73C10></pre></td> </tr> <tr> <td>self</td> <td class="code"><pre><Post: Post object (None)></pre></td> </tr> <tr> <td>val</td> <td class="code"><pre>None</pre></td> </tr> </tbody> </table> </details> </li> <li class="frame django"> <code class="fname">C:\Users\cswoo\.conda\envs\drf\lib\site-packages\django\db\models\fields\related_descriptors.py</code>, line 235, in __set__ <div class="context" id="c1303301876544"> <ol start="228" class="pre-context" id="pre1303301876544"> <li onclick="toggle('pre1303301876544', 'post1303301876544')"><pre> - ``instance`` is the ``child`` instance</pre></li> <li onclick="toggle('pre1303301876544', 'post1303301876544')"><pre> - ``value`` is the ``parent`` instance on the right of the equal sign</pre></li> <li onclick="toggle('pre1303301876544', 'post1303301876544')"><pre> """</pre></li> <li onclick="toggle('pre1303301876544', 'post1303301876544')"><pre> # An object must be an instance of the related class.</pre></li> <li onclick="toggle('pre1303301876544', 'post1303301876544')"><pre> if value is not None and not isinstance(</pre></li> <li onclick="toggle('pre1303301876544', 'post1303301876544')"><pre> value, self.field.remote_field.model._meta.concrete_model</pre></li> <li onclick="toggle('pre1303301876544', 'post1303301876544')"><pre> ):</pre></li> </ol> <ol start="235" class="context-line"> <li onclick="toggle('pre1303301876544', 'post1303301876544')"><pre> raise ValueError(</pre> <span>…</span></li> </ol> <ol start='236' class="post-context" id="post1303301876544"> <li onclick="toggle('pre1303301876544', 'post1303301876544')"><pre> 'Cannot assign "%r": "%s.%s" must be a "%s" instance.'</pre></li> <li onclick="toggle('pre1303301876544', 'post1303301876544')"><pre> % (</pre></li> <li onclick="toggle('pre1303301876544', 'post1303301876544')"><pre> value,</pre></li> <li onclick="toggle('pre1303301876544', 'post1303301876544')"><pre> instance._meta.object_name,</pre></li> <li onclick="toggle('pre1303301876544', 'post1303301876544')"><pre> self.field.name,</pre></li> <li onclick="toggle('pre1303301876544', 'post1303301876544')"><pre> self.field.remote_field.model._meta.object_name,</pre></li> </ol> </div> <details> <summary class="commands">Local vars</summary> <table class="vars" id="v1303301876544"> <thead> <tr> <th>Variable</th> <th>Value</th> </tr> </thead> <tbody> <tr> <td>instance</td> <td class="code"><pre><Post: Post object (None)></pre></td> </tr> <tr> <td>self</td> <td class="code"><pre><django.db.models.fields.related_descriptors.ForwardManyToOneDescriptor object at 0x0000012F717A5670></pre></td> </tr> <tr> <td>value</td> <td class="code"><pre><django.contrib.auth.models.AnonymousUser object at 0x0000012F72D73C10></pre></td> </tr> </tbody> </table> </details> </li> </ul> </div> <form action="https://dpaste.com/" name="pasteform" id="pasteform" method="post"> <div id="pastebinTraceback" class="pastebin"> <input type="hidden" name="language" value="PythonConsole"> <input type="hidden" name="title" value="ValueError at /ukstagram/posts/"> <input type="hidden" name="source" value="Django Dpaste Agent"> <input type="hidden" name="poster" value="Django"> <textarea name="content" id="traceback_area" cols="140" rows="25"> Environment: Request Method: POST Request URL: http://localhost:8000/ukstagram/posts/ Django Version: 4.0.4 Python Version: 3.8.12 Installed Applications: ['django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'rest_framework', 'ukstagram'] Installed Middleware: ['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'] Traceback (most recent call last): File "C:\Users\cswoo\.conda\envs\drf\lib\site-packages\django\core\handlers\exception.py", line 55, in inner response = get_response(request) File "C:\Users\cswoo\.conda\envs\drf\lib\site-packages\django\core\handlers\base.py", line 197, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) File "C:\Users\cswoo\.conda\envs\drf\lib\site-packages\django\views\decorators\csrf.py", line 54, in wrapped_view return view_func(*args, **kwargs) File "C:\Users\cswoo\.conda\envs\drf\lib\site-packages\rest_framework\viewsets.py", line 125, in view return self.dispatch(request, *args, **kwargs) File "C:\Users\cswoo\.conda\envs\drf\lib\site-packages\rest_framework\views.py", line 509, in dispatch response = self.handle_exception(exc) File "C:\Users\cswoo\.conda\envs\drf\lib\site-packages\rest_framework\views.py", line 469, in handle_exception self.raise_uncaught_exception(exc) File "C:\Users\cswoo\.conda\envs\drf\lib\site-packages\rest_framework\views.py", line 480, in raise_uncaught_exception raise exc File "C:\Users\cswoo\.conda\envs\drf\lib\site-packages\rest_framework\views.py", line 506, in dispatch response = handler(request, *args, **kwargs) File "C:\Users\cswoo\.conda\envs\drf\lib\site-packages\rest_framework\mixins.py", line 19, in create self.perform_create(serializer) File "C:\Users\cswoo\OneDrive\Documents\DRF\ukstagram\views.py", line 46, in perform_create serializer.save(author=self.request.user) File "C:\Users\cswoo\.conda\envs\drf\lib\site-packages\rest_framework\serializers.py", line 212, in save self.instance = self.create(validated_data) File "C:\Users\cswoo\.conda\envs\drf\lib\site-packages\rest_framework\serializers.py", line 962, in create instance = ModelClass._default_manager.create(**validated_data) File "C:\Users\cswoo\.conda\envs\drf\lib\site-packages\django\db\models\manager.py", line 85, in manager_method return getattr(self.get_queryset(), name)(*args, **kwargs) File "C:\Users\cswoo\.conda\envs\drf\lib\site-packages\django\db\models\query.py", line 512, in create obj = self.model(**kwargs) File "C:\Users\cswoo\.conda\envs\drf\lib\site-packages\django\db\models\base.py", line 541, in __init__ _setattr(self, field.name, rel_obj) File "C:\Users\cswoo\.conda\envs\drf\lib\site-packages\django\db\models\fields\related_descriptors.py", line 235, in __set__ raise ValueError( Exception Type: ValueError at /ukstagram/posts/ Exception Value: Cannot assign "<django.contrib.auth.models.AnonymousUser object at 0x0000012F72D73C10>": "Post.author" must be a "User" instance. </textarea> <br><br> <input type="submit" value="Share this traceback on a public website"> </div> </form> </div> <div id="requestinfo"> <h2>Request information</h2> <h3 id="user-info">USER</h3> <p>AnonymousUser</p> <h3 id="get-info">GET</h3> <p>No GET data</p> <h3 id="post-info">POST</h3> <p>No POST data</p> <h3 id="files-info">FILES</h3> <p>No FILES data</p> <h3 id="cookie-info">COOKIES</h3> <p>No cookie data</p> <h3 id="meta-info">META</h3> <table class="req"> <thead> <tr> <th>Variable</th> <th>Value</th> </tr> </thead> <tbody> <tr> <td>ALLUSERSPROFILE</td> <td class="code"><pre>'C:\\ProgramData'</pre></td> </tr> <tr> <td>APPDATA</td> <td class="code"><pre>'C:\\Users\\cswoo\\AppData\\Roaming'</pre></td> </tr> <tr> <td>CLSID</td> <td class="code"><pre>'{290BFAA9-A9FC-AD78-7B4F-4803F0742CCA}'</pre></td> </tr> <tr> <td>COMMONPROGRAMFILES</td> <td class="code"><pre>'C:\\Program Files\\Common Files'</pre></td> </tr> <tr> <td>COMMONPROGRAMFILES(X86)</td> <td class="code"><pre>'C:\\Program Files (x86)\\Common Files'</pre></td> </tr> <tr> <td>COMMONPROGRAMW6432</td> <td class="code"><pre>'C:\\Program Files\\Common Files'</pre></td> </tr> <tr> <td>COMPUTERNAME</td> <td class="code"><pre>'DESKTOP-9D39MMH'</pre></td> </tr> <tr> <td>COMSPEC</td> <td class="code"><pre>'C:\\WINDOWS\\system32\\cmd.exe'</pre></td> </tr> <tr> <td>CONDA_DEFAULT_ENV</td> <td class="code"><pre>'drf'</pre></td> </tr> <tr> <td>CONDA_PREFIX</td> <td class="code"><pre>'C:\\Users\\cswoo\\.conda\\envs\\drf'</pre></td> </tr> <tr> <td>CONDA_PROMPT_MODIFIER</td> <td class="code"><pre>'(drf) '</pre></td> </tr> <tr> <td>CONDA_SHLVL</td> <td class="code"><pre>'1'</pre></td> </tr> <tr> <td>CONTENT_LENGTH</td> <td class="code"><pre>'45'</pre></td> </tr> <tr> <td>CONTENT_TYPE</td> <td class="code"><pre>'application/json'</pre></td> </tr> <tr> <td>DJANGO_SETTINGS_MODULE</td> <td class="code"><pre>'DRF.settings'</pre></td> </tr> <tr> <td>DRIVERDATA</td> <td class="code"><pre>'C:\\Windows\\System32\\Drivers\\DriverData'</pre></td> </tr> <tr> <td>FPS_BROWSER_APP_PROFILE_STRING</td> <td class="code"><pre>'Internet Explorer'</pre></td> </tr> <tr> <td>FPS_BROWSER_USER_PROFILE_STRING</td> <td class="code"><pre>'Default'</pre></td> </tr> <tr> <td>GATEWAY_INTERFACE</td> <td class="code"><pre>'CGI/1.1'</pre></td> </tr> <tr> <td>GOOGLE_API_KEY</td> <td class="code"><pre>'********************'</pre></td> </tr> <tr> <td>GOOGLE_DEFAULT_CLIENT_ID</td> <td class="code"><pre>'no'</pre></td> </tr> <tr> <td>GOOGLE_DEFAULT_CLIENT_SECRET</td> <td class="code"><pre>'********************'</pre></td> </tr> <tr> <td>HOMEDRIVE</td> <td class="code"><pre>'C:'</pre></td> </tr> <tr> <td>HOMEPATH</td> <td class="code"><pre>'\\Users\\cswoo'</pre></td> </tr> <tr> <td>HTTP_ACCEPT</td> <td class="code"><pre>'application/json, */*;q=0.5'</pre></td> </tr> <tr> <td>HTTP_ACCEPT_ENCODING</td> <td class="code"><pre>'gzip, deflate'</pre></td> </tr> <tr> <td>HTTP_CONNECTION</td> <td class="code"><pre>'keep-alive'</pre></td> </tr> <tr> <td>HTTP_HOST</td> <td class="code"><pre>'localhost:8000'</pre></td> </tr> <tr> <td>HTTP_USER_AGENT</td> <td class="code"><pre>'HTTPie/3.1.0'</pre></td> </tr> <tr> <td>IDEA_INITIAL_DIRECTORY</td> <td class="code"><pre>'C:\\Users\\cswoo\\OneDrive\\Documents'</pre></td> </tr> <tr> <td>LOCALAPPDATA</td> <td class="code"><pre>'C:\\Users\\cswoo\\AppData\\Local'</pre></td> </tr> <tr> <td>LOGONSERVER</td> <td class="code"><pre>'\\\\DESKTOP-9D39MMH'</pre></td> </tr> <tr> <td>NUMBER_OF_PROCESSORS</td> <td class="code"><pre>'6'</pre></td> </tr> <tr> <td>ONEDRIVE</td> <td class="code"><pre>'C:\\Users\\cswoo\\OneDrive'</pre></td> </tr> <tr> <td>ONEDRIVECONSUMER</td> <td class="code"><pre>'C:\\Users\\cswoo\\OneDrive'</pre></td> </tr> <tr> <td>OS</td> <td class="code"><pre>'Windows_NT'</pre></td> </tr> <tr> <td>PATH</td> <td class="code"><pre>('C:\\Users\\cswoo\\.conda\\envs\\drf;C:\\Users\\cswoo\\.conda\\envs\\drf\\Library\\mingw-w64\\bin;C:\\Users\\cswoo\\.conda\\envs\\drf\\Library\\usr\\bin;C:\\Users\\cswoo\\.conda\\envs\\drf\\Libr ary\\bin;C:\\Users\\cswoo\\.conda\\envs\\drf\\Scripts;C:\\Users\\cswoo\\.conda\\envs\\drf\\bin;C:\\ProgramData\\Anaconda3\\condabin;C:\\ProgramData\\Anaconda3;C:\\ProgramData\\Anaconda3\\Library\\mingw-w64\\bin;C:\\ProgramData\\Anac onda3\\Library\\usr\\bin;C:\\ProgramData\\Anaconda3\\Library\\bin;C:\\ProgramData\\Anaconda3\\Scripts;C:\\WINDOWS\\system32;C:\\WINDOWS;C:\\WINDOWS\\System32\\Wbem;C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0;C:\\WINDOWS\\System32 \\OpenSSH;C:\\Program ' 'Files\\Git\\cmd;C:\\Users\\cswoo\\AppData\\Local\\Microsoft\\WindowsApps;C:\\Users\\cswoo\\AppData\\Local\\Microsoft\\WindowsApps;C:\\Program ' 'Files\\JetBrains\\PyCharm Community Edition ' '2021.2.2\\bin;.;C:\\Users\\cswoo\\AppData\\Local\\afreeca;C:\\Users\\cswoo\\AppData\\Local\\Programs\\Microsoft ' 'VS Code\\bin;C:\\Program Files\\JetBrains\\PyCharm 2021.3.3\\bin;.')</pre></td> </tr> <tr> <td>PATHEXT</td> <td class="code"><pre>'.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC'</pre></td> </tr> <tr> <td>PATH_INFO</td> <td class="code"><pre>'/ukstagram/posts/'</pre></td> </tr> <tr> <td>PROCESSOR_ARCHITECTURE</td> <td class="code"><pre>'AMD64'</pre></td> </tr> <tr> <td>PROCESSOR_IDENTIFIER</td> <td class="code"><pre>'Intel64 Family 6 Model 158 Stepping 10, GenuineIntel'</pre></td> </tr> <tr> <td>PROCESSOR_LEVEL</td> <td class="code"><pre>'6'</pre></td> </tr> <tr> <td>PROCESSOR_REVISION</td> <td class="code"><pre>'9e0a'</pre></td> </tr> <tr> <td>PROGRAMDATA</td> <td class="code"><pre>'C:\\ProgramData'</pre></td> </tr> <tr> <td>PROGRAMFILES</td> <td class="code"><pre>'C:\\Program Files'</pre></td> </tr> <tr> <td>PROGRAMFILES(X86)</td> <td class="code"><pre>'C:\\Program Files (x86)'</pre></td> </tr> <tr> <td>PROGRAMW6432</td> <td class="code"><pre>'C:\\Program Files'</pre></td> </tr> <tr> <td>PROMPT</td> <td class="code"><pre>'(drf) $P$G'</pre></td> </tr> <tr> <td>PSMODULEPATH</td> <td class="code"><pre>('C:\\Program ' 'Files\\WindowsPowerShell\\Modules;C:\\WINDOWS\\system32\\WindowsPowerShell\\v1.0\\Modules')</pre></td> </tr> <tr> <td>PUBLIC</td> <td class="code"><pre>'C:\\Users\\Public'</pre></td> </tr> <tr> <td>PYCHARM</td> <td class="code"><pre>'C:\\Program Files\\JetBrains\\PyCharm 2021.3.3\\bin;'</pre></td> </tr> <tr> <td>PYCHARM COMMUNITY EDITION</td> <td class="code"><pre>'C:\\Program Files\\JetBrains\\PyCharm Community Edition 2021.2.2\\bin;'</pre></td> </tr> <tr> <td>PYTHONIOENCODING</td> <td class="code"><pre>'utf-8'</pre></td> </tr> <tr> <td>QUERY_STRING</td> <td class="code"><pre>''</pre></td> </tr> <tr> <td>REMOTE_ADDR</td> <td class="code"><pre>'127.0.0.1'</pre></td> </tr> <tr> <td>REMOTE_HOST</td> <td class="code"><pre>''</pre></td> </tr> <tr> <td>REQUEST_METHOD</td> <td class="code"><pre>'POST'</pre></td> </tr> <tr> <td>RUN_MAIN</td> <td class="code"><pre>'true'</pre></td> </tr> <tr> <td>SCRIPT_NAME</td> <td class="code"><pre>''</pre></td> </tr> <tr> <td>SERVER_NAME</td> <td class="code"><pre>'DESKTOP-9D39MMH'</pre></td> </tr> <tr> <td>SERVER_PORT</td> <td class="code"><pre>'8000'</pre></td> </tr> <tr> <td>SERVER_PROTOCOL</td> <td class="code"><pre>'HTTP/1.1'</pre></td> </tr> <tr> <td>SERVER_SOFTWARE</td> <td class="code"><pre>'WSGIServer/0.2'</pre></td> </tr> <tr> <td>SESSIONNAME</td> <td class="code"><pre>'Console'</pre></td> </tr> <tr> <td>SYSTEMDRIVE</td> <td class="code"><pre>'C:'</pre></td> </tr> <tr> <td>SYSTEMROOT</td> <td class="code"><pre>'C:\\WINDOWS'</pre></td> </tr> <tr> <td>TEMP</td> <td class="code"><pre>'C:\\Users\\cswoo\\AppData\\Local\\Temp'</pre></td> </tr> <tr> <td>TERMINAL_EMULATOR</td> <td class="code"><pre>'JetBrains-JediTerm'</pre></td> </tr> <tr> <td>TERM_SESSION_ID</td> <td class="code"><pre>'8e1c69ed-565b-4df9-abcb-4027930ba073'</pre></td> </tr> <tr> <td>TMP</td> <td class="code"><pre>'C:\\Users\\cswoo\\AppData\\Local\\Temp'</pre></td> </tr> <tr> <td>USERDOMAIN</td> <td class="code"><pre>'DESKTOP-9D39MMH'</pre></td> </tr> <tr> <td>USERDOMAIN_ROAMINGPROFILE</td> <td class="code"><pre>'DESKTOP-9D39MMH'</pre></td> </tr> <tr> <td>USERNAME</td> <td class="code"><pre>'cswoo'</pre></td> </tr> <tr> <td>USERPROFILE</td> <td class="code"><pre>'C:\\Users\\cswoo'</pre></td> </tr> <tr> <td>WINDIR</td> <td class="code"><pre>'C:\\WINDOWS'</pre></td> </tr> <tr> <td>__INTELLIJ_COMMAND_HISTFILE__</td> <td class="code"><pre>'C:\\Users\\cswoo\\AppData\\Local\\JetBrains\\PyCharm2021.3\\terminal\\history\\DRF-history'</pre></td> </tr> <tr> <td>wsgi.errors</td> <td class="code"><pre><colorama.ansitowin32.StreamWrapper object at 0x0000012F70805610></pre></td> </tr> <tr> <td>wsgi.file_wrapper</td> <td class="code"><pre><class 'wsgiref.util.FileWrapper'></pre></td> </tr> <tr> <td>wsgi.input</td> <td class="code"><pre><django.core.handlers.wsgi.LimitedStream object at 0x0000012F729DC190></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>DRF.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>WindowsPath('C:/Users/cswoo/OneDrive/Documents/DRF')</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': WindowsPath('C:/Users/cswoo/OneDrive/Documents/DRF/db.sqlite3'), 'OPTIONS': {}, 'PASSWORD': '********************', 'PORT': '', 'TEST': {'CHARSET': None, 'COLLATION': None, 'MIGRATE': True, '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', '%m/%d/%Y %H:%M:%S', '%m/%d/%Y %H:%M:%S.%f', '%m/%d/%Y %H:%M', '%m/%d/%y %H:%M:%S', '%m/%d/%y %H:%M:%S.%f', '%m/%d/%y %H:%M']</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_AUTO_FIELD</td> <td class="code"><pre>'django.db.models.BigAutoField'</pre></td> </tr> <tr> <td>DEFAULT_CHARSET</td> <td class="code"><pre>'utf-8'</pre></td> </tr> <tr> <td>DEFAULT_EXCEPTION_REPORTER</td> <td class="code"><pre>'django.views.debug.ExceptionReporter'</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_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', 'ukstagram']</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'), ('ar-dz', 'Algerian 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'), ('ig', 'Igbo'), ('io', 'Ido'), ('is', 'Icelandic'), ('it', 'Italian'), ('ja', 'Japanese'), ('ka', 'Georgian'), ('kab', 'Kabyle'), ('kk', 'Kazakh'), ('km', 'Khmer'), ('kn', 'Kannada'), ('ko', 'Korean'), ('ky', 'Kyrgyz'), ('lb', 'Luxembourgish'), ('lt', 'Lithuanian'), ('lv', 'Latvian'), ('mk', 'Macedonian'), ('ml', 'Malayalam'), ('mn', 'Mongolian'), ('mr', 'Marathi'), ('ms', 'Malay'), ('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'), ('tg', 'Tajik'), ('th', 'Thai'), ('tk', 'Turkmen'), ('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', 'ar-dz', '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</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>'DRF.urls'</pre></td> </tr> <tr> <td>SECRET_KEY</td> <td class="code"><pre>'********************'</pre></td> </tr> <tr> <td>SECURE_CONTENT_TYPE_NOSNIFF</td> <td class="code"><pre>True</pre></td> </tr> <tr> <td>SECURE_CROSS_ORIGIN_OPENER_POLICY</td> <td class="code"><pre>'same-origin'</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>'same-origin'</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>'DRF.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>'Asia/Seoul'</pre></td> </tr> <tr> <td>USE_DEPRECATED_PYTZ</td> <td class="code"><pre>False</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> <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 리액트
is_public 필드에서 db_index를 사용하는 이유가 무엇인지 잘 모르겠습니다
강사님 안녕하세요! 제가 강의를 듣던중 is_public 필드에 db_index를 사용하는 이유를 잘 모르겠어서 서치를 해본결과 스택오버플로우에서 다음과 같은 답변이 있었습니다. 이 답변을 보고 db_index=True로 지정하면 데이터를 하나를 찾으면 검색을 멈춰 효율성을 올릴수 있다고 이해하였습니다. 그래서 여러 포스트에 대하여 is_public=True로 지정한후, GET 요청을 보내면 하나를 찾으면 검색이 멈춰 데이터 하나만 조회 되어야한다고 생각하고 테스트를 해본결과 is_public=True 인 모든 데이터가 조회되었습니다. 그레서 현재 db_index=True 인자가 어떤 역할을 하는것인지에 대한 혼란이 있습니다ㅠㅠ
- 미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
form 인스턴스에 대해 질문입니다!
안녕하세요? 강의 잘 듣고 있습니다. 현재 부트캠프에서 이것저것 배우고 있는데, 선생님의 강의를 듣고 갔던게 참 힘이 많이 됩니다ㅎㅎ DRF를 결국 따로 공부해야 할 것 같아서 강의전반을 다시 듣고 있는데 참 많은 내용을 설명해주셨었네요 ㅎㅎ..다시 한번 감사드립니다. 의문인 부분이 있는데요 def post_new(request): if request.method =="POST": form = PostForm(request.POST,request.FILES) if form.is_valid(): post = form.save() return redirect(post) #get_absolute_url을 찾아감 else: form = PostForm() return render(request,'instagram/post_form.html',{ 'form':form, }) 1.위의 코드에서 form = PostForm(request.Post,request.Fiels)일때 이미 form은 마치 어떤 model의 객체(?)와 같이 되어버리는 건가요? 예를 들어, post = Post.objects.first() 라고 하면 postmodel의 첫번째 객체가 잡히고 , 그 객체의 다른 속성에 접근할 수가 있는데(예를 들어 post.title) 지금 저 form도 방금 예시로 든 post의 상태가 되어버린 건가요??(물론 form에서 구현했고 클라이언트에서 담은 필드에 대한 정보만 담겨져 있겠지만요) 2. 유효성 검사 is_valid() 가 통과되면, 유효성 검사가 통과된 값이 자동으로 form.cleaned_data에 데이터가 담기는 것으로 알고 있는데(지난 번에 가르쳐주셔서요!) 위의 예시에서 form.save()를 바로 해주는 건, form.save()를 할경우 form.cleaned_data가 연결된 모델에 새로운 데이터로 바로 생성되기 때문에 가능한건가요? 한편 24:03초에 post = Post(**form.cleaned_data)라고 post로 받아주는 건, form.claned_data에 담긴 정보를 가진 새로운 post객체를 생성하고 나서 생성된 객체를 post.save()로 저장하려는 의도인건지도 확인을 받고 싶습니다 ㅠㅠ
- 미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
안녕하세요 clean_필드이름명과 관련해서 질문드립니다.
안녕하세요! 강의내용에서 clean_필드이름명으로 함수를 구현했는데 화면처럼 빈 문자열이 되버리네요ㅜㅜ models.py에서 Post 모델필드에 message필드에다가 blank=True를 두니 처리는 되는데 영어만 사라지는게 아니라 문자열 전체가 사라지는 것 같은데 왜그러는걸까요?
- 미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
안녕하세요 ngrok와 관련하여 질문드립니다
선생님 설명대로 ngrok를 실습하였는데 django admin에서 로그인시 저런 페이지가 뜨는데 왜 그런지 이유를 잘 모르겠습니다 ㅠㅠ
- 해결됨파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
django-pydenticon을 import 했을 때, attributeError가 발생해 질문드립니다.
- 여러분의 질문을 고대하고 있습니다. :-)- 질문 전에 검색을 먼저 해보세요. 사람 사는 게 다 비슷하다는 것을 알게 됩니다.- 예의는 거침없이 질문하기 위한 최고의 발명품입니다.- 100개의 설명이 스크린샷 한방 보다 못할 수 있습니다.- 코드를 첨부하면 전세계 누구나 이해할 수 있는 질문이 됩니다.- 하나의 질문에는 하나의 주제를 담아야 답변도 예리해집니다.- 시행착오를 알려주시면 곧 바로 원하는 문제에 집중할 수 있습니다.- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 강사님 항상 좋은 강의 들으면서 열심히 공부하고 있습니다. 다름이 아니라 프로필 이미지가 없을 경우 대체 이미지를 표현하는 django-pydenticon에 대한 문제를 해결하지 못하여 질문드립니다. pip install django-pydenticon을 먼저 완료한 후, common.py에 추가했습니다. 그 후, common.py의 installed_apps에 'django_pydenticon'을 추가했습니다. 그 후, project의 urls.py에 django-pydenticon을 import 한 후, path도 등록했더니 attributeError가 발생했습니다. 구글링을 해도 오류를 찾지 못해 질문 남깁니다. 아래는 오류 화면입니다.
- 미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
안녕하세요 !!!!!!선생님 !!! tag모델 manytomany serializer response에 대하여 질문드려요!! ㅎㅎ
안녕하세요 선생님!!!! ㅎㅎㅎ tag모델 manytomany에 대하여 api response에 대하여 질문드립니다!!! ㅎㅎ 선생님 강의 참고하면서 정규식으로 tag모델의 text를 저장하는것을 참고해서 만들었는데요 postman으로 tag응답을 리스트로 받고 싶은데,, 음 어떻게 view나 serializer를 코딩 해야 받을 수 잇을지 모르겠네요;; 위는 post 모델이구요! tag 모델입니다!! view는 Modelviewset을 이용해서 만들었구요!! 강의에서 caption에서 정규식으로 태그 내용끌어온거 그대로 동작하게 만들어서(caption에서 content로 필드명을 바꿨습니다!) post요청시에 자동으로 tag가 저장이 됩니다!! 다만 작성된 tag 들도 응답을 받고 싶은데 스택오버플로우를 따라 했는데도 아예 field도 안잡히네용 ㅠㅠ 위는 한 포스트 생성시 image를 여러개를 담아서 저장 할 수 있도록 코드도 짯고 저렇게 리스트 응답이 오도록 만들었는데,, tag도 images응답과 비슷하게 생성 된 태그에 대해서 response를 받으려면 어디를 건들어야 할까요!!???? 지금 현재 postserializer는 위와 같이 되있습니다. tags필드는 아예 응답을 하지 않네요 ㅠㅠ serializer를 어떻게 커스텀을 해야하는지 궁금하네요 ㅠㅠ!! 저번에도 선생님께서 친절하게 알려주신 방법으로 코드를 수정해서 성능와 ux가 매우 좋아졌습니다!! !!!!!! 항상 진심으로 진심으로 감사드립니다!!!!!ㅎㅎㅎㅎ ;-D
- 미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
axios Unauthorized 에러 관련 질문 드립니다.
강사님~ 안녕하세요~~!! 강의 수강 중 - Suggestion 목록 API 및 화면 구현 - useAxios 훅을 통한 보다 손쉬운 조회 API 요청 해당 강의의 실습 중 에러가 생겨서 질문을 드립니다. 먼저, 아래는 SuggestionList.js 의 코드입니다. 아래는 Suggestion.js의 코드입니다. 리액트 페이지에서 suggetstions for you 부분에 친구 목록이 뜨지 않고, 다음과 같은 error가 보여집니다. (이전에는 되었던 것 같은데 컴퓨터를 재부팅 한 이후로 되지 않는 것 같습니다...ㅠㅠ) 해결을 어떻게 해야할 지 강사님의 조언을 구하고 싶습니다..! 그럼 미리 감사 인사를 드립니다 ㅠㅠ !!
- 미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
DisallowedHost 예외 관련 질문입니다.
선생님 안녕하세요. 수업 중에 DisallowedHost 예외에 대해서 설명해주시면서, ngrok를 사용할 때는 ngrok에서 제시하는 url 주소를 추가해줘야 하지만 실제로 서비스를 운영할 때에는 별로 추가할 것이 없다고 하셨는데요. 실제로 서비스를 운영할 때는 어떤 주소들이 추가되나요? 악성 사용자가 아닌 이상 누구든 접속을 허용해줘야하니 차단하게끔 설정한 일부를 제외한 나머지에게는 열어두는 것인가요? 네트워크 쪽 공부를 깊이 하지 않은 상태라 조금 잘 와닿지 않는 부분이 있는 것 같습니다.
- 미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
CORS 에러에 대해서 좀 더 자세한 설명 부탁드립니다.
안녕하세요. jQuery가 melon으로 AJAX 요청을 날렸을 때 CORS 에러가 발생하는 사례에 대해서 좀 더 자세한 설명을 요청드리고 싶은데요. 브라우저가 차단하는 거라고 말씀하셨는데, 정확히 어떤 일들이 어떤 순서로 일어나는지 궁금합니다. 강의 중에 말씀하신 것을 바탕으로 melon.com에서 CORS를 허용하는 host 중에 localhost:8000이 없기 때문에, 즉 localhost:8000에서 AJAX 요청을 보냈을 때에 melon.com이 CORS를 허용한다는 헤더가 포함된 응답을 보내주지 않기 때문이라고 이해했는데요. 사실 이렇게 생각하면 결국 melon.com에서 요청에 대해서 유저가 기대한 응답을 주는 것을 거부했다는 것처럼 느껴지는데, 유저가 사용하는 브라우저가 차단을 한다는 건 어느 단계에서 무엇을 그렇게 한다는 것인가요? 그리고 JSONP의 경우는 리액트를 사용하면서도 종종 사용하는 경우가 있는 건가요?
- 미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
generate_view_fn 함수 질문
안녕하세요 일급함수와 관련해서 generate_view_fn 함수를 설명해주셨는데, return 값에서 instance_name은 template에 넘겨주기 위한 변수이름으로 활용되는 건가요? 설명에서는 위에 view_fn함수에 있는 instance_name과 같다고 하셨는데 헷갈려서 질문 남깁니다!! 감사합니다
- 미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
메일발송이 되지 않습니다 ㅠㅠ // form.save()에 대하여 질문입니다.
안녕하세요? 1.이전에는 됐는데, 왜 다시할때는 안되는건지 모르겠네요 ㅠㅠ 11분경에 보내시는 메일이 발송이 되지 않습니다. 다음과 같이 1이 출력되면 메일이 발송성공한 것으로 알고 있는데, 기다려 보아도 메일이 오지를 않네요 강의 후반부에 회원가입과 동시에 메일을 보내는 부분도 메일이 발송되지가 않습니다 ㅠㅠ 2. 14분경에 views.py에서 signup함수 내부에 form.save()를 signed_user = form.save()로 바꿔주시는데, form.save()라는 함수가 값들을 실질적으로 db에 저장하는 것으로 알고 잇습니다. 그러면 signed_user = form.save()로 받아주는 부분은 해당 데이터를 db에 저장하는 동시에 저장된 그 유저 인스턴스(데이터 한행)를 변수에 담는 것인가요? 좋은 강의 감사합니다
- 미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
pip로 패키지 인스톨이 안 되는데 어떻게 해야할까요?
안녕하세요. 정확히 어떤 작업을 한 이후인지는 모르겠는데, pip로 패키지를 인스톨하려고 하면 아래와 같은 에러가 뜹니다. 어떤 패키지를 설치하려고 해도 안 되고, 아래 다른 WARNING으로 나온 것처럼 pip를 업그레이드 해주려고 해도 같은 warning이 뜨면서 되지 않습니다. 구글링 했을 때 나온 답변들은 대부분 pip install --upgrade pip --trusted-host pypi.org --trusted-host files.pythonhosted.org 이런 식으로 trusted host를 설정하라는 식이었는데 소용 없었습니다. OpenSSL을 최신 버전으로 다시 설치해보라는 답변이 있어서 해봤더니 한 번 해결이 되기도 했는데, 이후에 다시 하려니 안 되네요. 혹시 무엇이 문제인 걸까요? 파이썬은 3.9 버전을 사용 중이고, pip는 21.2.4, django는 3.0.14 버전 사용 중입니다.
- 해결됨파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
NoReverseMatch 오류 관련 질문드립니다.
- 여러분의 질문을 고대하고 있습니다. :-)- 질문 전에 검색을 먼저 해보세요. 사람 사는 게 다 비슷하다는 것을 알게 됩니다.- 예의는 거침없이 질문하기 위한 최고의 발명품입니다.- 100개의 설명이 스크린샷 한방 보다 못할 수 있습니다.- 코드를 첨부하면 전세계 누구나 이해할 수 있는 질문이 됩니다.- 하나의 질문에는 하나의 주제를 담아야 답변도 예리해집니다.- 시행착오를 알려주시면 곧 바로 원하는 문제에 집중할 수 있습니다.- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 강사님 항상 좋은 강의 감사합니다. 강의를 따라 코드 작성을 하던 중 NoReverseMatch가 해결이 되지 않아 질문 남깁니다. NoReverseMatch는 아직 저장되지 않은 포스팅을 redirect할 때, pk에 none 이 반환되어 오류가 발생한다고 이해했습니다. 따라서 post_new를 선언할 때, post .save()로 마무리해야한다고 이해해서 진행하였습니다. 그러던 중 새 포스팅을 잘 작성하다, 또다른 포스팅을 작성하려했는데 해당 오류가 또 발생하였습니다. 아래는 views.py 중 post_new 부분입니다.
- 미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
front와 back의 경계??
안녕하세요 선생님 항상 좋은강의 감사합니다. 저의 대학교에서 친구들과 역활분담을 하여 장고와 리엑트를 이용해 웹페이지를 만들려고 하는데요. 저를 포함장고 2명 리엑트 한명으로 구성되어 있습니다. 다만 한가지 궁금증이 예시가 올바른지는 잘 모르겠습니다만 django에서 선생님이 설명해주신 message같은 기능이있고javascript에 alert기능이나 아니면 직접 구현하는 event 기능이 있는데 어떤 것을 사용할지는 보통 개발자들 취향에 따라 결정되는건가요? 아님 관습이나 규칙?같은게 있나요?
- 미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
template vs react,vue ???
안녕하세요 선생님 항상 좋은강의 감사합니다. 다름이아니라 문득 궁금증이 생겨서 질문드립니다. 실제 django를 이용해 웹페이지를 만드는 회사?들은 tempate 기능으로만 웹페이지를 만들고 베포하는 경우가 많나요? 이제 리액트를 수강하고 있지만 template보다 react나 vue가 더 기능이나 디자인? 같은게 더 좋을것 같은데 제가 완전히 엉뜽하게 생각하고 있는건가요?
- 미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
clean_field 함수에 대하여 질문입니다.
안녕하세요? 강의 잘 듣고 있습니다. 해당 강의의 SignupForm부분에서 clean_email에 대해 질문입니다. class SignupForm(UserCreationForm): def __init__(self,*args,**kwargs): super().__init__(*args,**kwargs) self.fields['email'].required = True self.fields['first_name'].required = True self.fields['last_name'].required = True class Meta(UserCreationForm.Meta): #Meta도 usercreationform의 메타이기 때문 model = get_user_model() fields = ['username','email','first_name','last_name'] #form이 제출될 때, clean_field형식의 함수들이 자동으로 호출이 됨? def clean_email(self): email = self.cleaned_data.get('email') if email: qs = User.objects.filter(email=email) if qs.exists(): raise forms.ValidationError("이미 등록된 이메일 주소입니다.") return email 1. 폼이 제출될 때, 모든 폼들의 데이터에 대해 유효성 검사가 완료되고, 완료된 결과가 cleand_data에 딕셔너리 형태로 담기는 것인가요? 2. 유효성 검사가 끝이나고(cleanded_data가 다 종료되고) clean_field 형태의 함수가 자동으로 호출이 되는건가요? 3. 마지막으로 clean_email함수에서 유효성검사가 끝이나면 email을 반환하는데요 반환된 email이 모델폼의 인스턴스, 그러니까 한행의 데이터에 바로 들어가는 로직이 궁금한데, 찾아봐도 잘 모르겠습니다 ㅠㅠ
- 미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
주피터 노트북 장고 실행 질문입니다.
수업에 맞게 notebook을 실행해보았는데 계속 에러가 나네요. 아무리 찾아봐도 고칠수없어 질문 드립니다. --------------------------------------------------------------------------- SynchronousOnlyOperation Traceback (most recent call last) C:\ProgramData\Anaconda3\envs\askcompany\lib\site-packages\IPython\core\formatters.py in __call__(self, obj) 700 type_pprinters=self.type_printers, 701 deferred_pprinters=self.deferred_printers) --> 702 printer.pretty(obj) 703 printer.flush() 704 return stream.getvalue() C:\ProgramData\Anaconda3\envs\askcompany\lib\site-packages\IPython\lib\pretty.py in pretty(self, obj) 392 if cls is not object \ 393 and callable(cls.__dict__.get('__repr__')): --> 394 return _repr_pprint(obj, self, cycle) 395 396 return _default_pprint(obj, self, cycle) C:\ProgramData\Anaconda3\envs\askcompany\lib\site-packages\IPython\lib\pretty.py in _repr_pprint(obj, p, cycle) 698 """A pprint that just redirects to the normal repr function.""" 699 # Find newlines and replace them with p.break_() --> 700 output = repr(obj) 701 lines = output.splitlines() 702 with p.group(): C:\ProgramData\Anaconda3\envs\askcompany\lib\site-packages\django\db\models\query.py in __repr__(self) 250 251 def __repr__(self): --> 252 data = list(self[:REPR_OUTPUT_SIZE + 1]) 253 if len(data) > REPR_OUTPUT_SIZE: 254 data[-1] = "...(remaining elements truncated)..." C:\ProgramData\Anaconda3\envs\askcompany\lib\site-packages\django\db\models\query.py in __iter__(self) 274 - Responsible for turning the rows into model objects. 275 """ --> 276 self._fetch_all() 277 return iter(self._result_cache) 278 C:\ProgramData\Anaconda3\envs\askcompany\lib\site-packages\django\db\models\query.py in _fetch_all(self) 1259 def _fetch_all(self): 1260 if self._result_cache is None: -> 1261 self._result_cache = list(self._iterable_class(self)) 1262 if self._prefetch_related_lookups and not self._prefetch_done: 1263 self._prefetch_related_objects() C:\ProgramData\Anaconda3\envs\askcompany\lib\site-packages\django\db\models\query.py in __iter__(self) 55 # Execute the query. This will also fill compiler.select, klass_info, 56 # and annotations. ---> 57 results = compiler.execute_sql(chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size) 58 select, klass_info, annotation_col_map = (compiler.select, compiler.klass_info, 59 compiler.annotation_col_map) C:\ProgramData\Anaconda3\envs\askcompany\lib\site-packages\django\db\models\sql\compiler.py in execute_sql(self, result_type, chunked_fetch, chunk_size) 1133 cursor = self.connection.chunked_cursor() 1134 else: -> 1135 cursor = self.connection.cursor() 1136 try: 1137 cursor.execute(sql, params) C:\ProgramData\Anaconda3\envs\askcompany\lib\site-packages\django\utils\asyncio.py in inner(*args, **kwargs) 20 else: 21 if event_loop.is_running(): ---> 22 raise SynchronousOnlyOperation(message) 23 # Pass onwards. 24 return func(*args, **kwargs) SynchronousOnlyOperation: You cannot call this from an async context - use a thread or sync_to_async.
- 미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
User모델에 대하여 질문입니다.
안녕하세요? 현재 강의를 다시들으면서 헷갈리는 내용을 정리해 나가고 있습니다. 3분30~4분30초 즈음에 common.py에서 AUTH_USER_MODEL = "accounts.User"로 바꿔주시면서, 원래 default값이 auth.user라고 해주시는데요 이 auth.user가 https://github.com/django/django/blob/6a80fd1465277d465c146cab57ffa41cbae1c5ce/django/contrib/auth/models.py#L402 있는 user클래스가 맞나요? 그래서 원래 장고내부적으로 설정을 하지 않으면 auth.user라는 user모델이 돌아가는 것이고(그래서 migration을 그냥 하면 auth.user로 만들어진 db가 생성되는 것이구요) 우리가 필요에 따라 커스터마이징한 User모델(accounts.user)을 만들어줄 경우 그 커스터마이징한 User모델이 장고프로젝트 내부에서 통용되는 Usermodel이라고 선언을 해주는 작업으로 이해해도 될까요? +그러면 만약 get_user_model로 user모델을 가져올 경우, 들고와지는 user모델은 settings.AUTH_USER_MODEL에서 선언된 모델이 되는 것인가요? 늘 감사합니다!
- 미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
15:20쪽이 이해가되지 않아 문의드립니다.
@admin.register(Post) #wrapping class PostAdmin(admin.ModelAdmin): list_display =['pk', 'message', 'message_length' ,'created_at', 'updated_at'] #모델에서 정의된 필드들 함수들을 넣을수 있다. admin 페이지에서 확인가능 list_display_links = ['message'] #message를 통해 해당 Post로 들어갈수 있게한다(여러개 설정가능) def message_length(self, post): return len(post.message) 여기서 message_length가 post를 받는데 앞글자가 대문자가아닌 소문자인데 어떤식으로 인자를 받는건가요?