묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
lt, rt의 자료형 Node 질문 드립니다.
강의 듣고 이해가 가지 않는 부분이 있어 질문 드립니다! Node 클래스의 lt와 rt 변수의 자료형이 Node라고 코드를 구현하셨는데 이 부분이 잘 이해가 가지 않습니다. 클래스 내부의 변수의 자료형이 본인 클래스일 수 있는 건가요? 자료형이 참조형인 경우 가능한건가요?? 구글 검색을 통해 찾아보려고 했는데 원하는 답을 찾기 어려워서 질문 남깁니다! 감사합니다~
-
해결됨남박사의 파이썬으로 실전 웹사이트 만들기
(회원가입 비밀번호 일치하지 않음 및 flask_wtf.csrf 오류) 보안강화 - 로그인 정보 암호화 하고 CSRF Protect 구현하기 강의중 오류..
남박사님 안녕하세요 이번 보안강화 - 로그인정보 암호화 강좌 진행중에.. 오류를 해결하지 못해서 질문 드립니다. 우선 내용은 이렇습니다. 1. werkzeug.security 설정진행중 패스워드 보안작업중에 "pass": hash_password(pass1) 로 변경후에 회원가입을 하면 비밀번호가 일치하지 않습니다라고 계속 나오더라구요.. 몽고db에서 내용지워도 마찬가지 입니다. 그전에는 정상적으로 로그인이 되었습니다. 2. flask_wtf.csrf import CSRFProtect 를 적용하는데 pip install flask-wtf를 설치해도 오류가 나오더라구요.. 문제 사진 1번 2번 3번 4번 5번 코드 - board.py- from main import * from flask import Blueprint bluerprint = Blueprint("member", __name__, url_prefix="/member") # @csrf.exempt @bluerprint.route("/join", methods=["GET", "POST"]) def member_join(): if request.method == "POST": name = request.form.get("name", type=str) email = request.form.get("email", type=str) pass1 = request.form.get("pass", type=str) pass2 = request.form.get("pass2", type=str) if name == "" or email == "" or pass1 == "" or pass2 == "": flash("입력되지 않은 값이 있습니다.") return render_template("join.html", title="회원가입") if pass1 != pass2: flash("비밀번호가 일치하지 않습니다.") return render_template("join.html", title="회원가입") members = mongo.db.members cnt = members.count_documents({"email": email}) if cnt > 0: flash("중복된 이메일 주소입니다.") return render_template("join.html", title="회원가입") current_utc_time = round(datetime.utcnow().timestamp() * 1000) post = { "name": name, "email": email, "pass": hash_password(pass1), "joindate": current_utc_time, "logintime": "", "logincount": 0, } members.insert_one(post) return redirect(url_for("member.member_login")) else: return render_template("join.html", title="회원가입") @bluerprint.route("/login", methods=["GET", "POST"]) def member_login(): if request.method == "POST": email = request.form.get("email") password = request.form.get("pass") next_url = request.form.get("next_url") members = mongo.db.members data = members.find_one({"email": email}) if data is None: flash("회원 정보가 없습니다.") return redirect(url_for("member.member_login")) else: if check_password(data.get("pass"), password): session["email"] = email session["name"] = data.get("name") session["id"] = str(data.get("_id")) session.permanent = True if next_url is not None: return redirect(next_url) else: return redirect(url_for("board.lists")) else: flash("비밀번호가 일치하지 않습니다.") return redirect(url_for("member.member_login")) return "" else: next_url = request.args.get("next_url", type=str) if next_url is not None: return render_template("login.html", next_url=next_url, title="회원로그인") else: return render_template("login.html", title="회원로그인") @bluerprint.route("/logout") def member_logout(): try: del session["name"] del session["id"] del session["email"] except: pass return redirect(url_for('member.member_login')) ---------------------------------------------------------------------------------------------------- - common.py - from functools import wraps from main import session, redirect, request, url_for, ALLOWED_EXTENSIONS from string import digits, ascii_uppercase, ascii_lowercase import random import re import os from werkzeug.security import generate_password_hash, check_password_hash def hash_password(password): return generate_password_hash(password) def check_password(hashed_password, user_password): return check_password_hash(hashed_password, user_password) def check_filename(filname): reg = re.compile("[^A-Za-z0-9_.가-힝-]") for s in os.path.sep, os.path.altsep: if s: filname = filname.replace(s, ' ') filname = str(reg.sub('', '_'.join(filname.split()))).strip("._") return filname def allowed_file(filename): return "." in filename and filename.rsplit(".", 1)[1] in ALLOWED_EXTENSIONS def rand_generator(length=8): char = ascii_lowercase + ascii_uppercase + digits return "".join(random.sample(char, length)) def login_required(f): @wraps(f) def decorated_function(*args, **kwargs): if session.get("id") is None or session.get("id") == "": return redirect(url_for("member.member_login", next_url=request.url)) return f(*args, **kwargs) return decorated_function ---------------------------------------------------------------------------------------------------- - __init__.py - from flask import Flask from flask import request from flask import render_template from flask_pymongo import PyMongo from bson.objectid import ObjectId from datetime import datetime, timedelta from flask import abort from flask import redirect from flask import url_for from flask import flash from flask import session # from flask_wtf.csrf import CSRFProtect import math import time import os app = Flask(__name__) app.config["MONGO_URI"] = "mongodb://localhost:27017/myweb" app.config["SECRET_KEY"] = "abcd" app.config["PERMANENT_SESSION_LIFETIME"] = timedelta(minutes=30) mongo = PyMongo(app) BOARD_IMAGE_PATH = "C:\\python\\images" BOARD_ATTACH_FILE_PATH = "C:\\python\\uploads" ALLOWED_EXTENSIONS =set(["txt", "pdf", "png", "jpg", "jpeg", "gif"]) app.config["BOARD_IMAGE_PATH"] = BOARD_IMAGE_PATH app.config["BOARD_ATTACH_FILE_PATH"] = BOARD_ATTACH_FILE_PATH app.config["MAX-CONTENT_LENGTH"] = 15 * 1024 * 1024 if not os.path.exists(app.config["BOARD_IMAGE_PATH"]): os.mkdir(app.config["BOARD_IMAGE_PATH"]) if not os.path.exists(app.config["BOARD_ATTACH_FILE_PATH"]): os.mkdir(app.config["BOARD_ATTACH_FILE_PATH"]) from .common import login_required, allowed_file, rand_generator, check_filename, hash_password, check_password from .filter import format_datetime from . import board from . import member app.register_blueprint(board.bluerprint) app.register_blueprint(member.bluerprint) ---------------------------------------------------------------------------------------------------- -member.py- from main import * from flask import Blueprint bluerprint = Blueprint("member", __name__, url_prefix="/member") # @csrf.exempt @bluerprint.route("/join", methods=["GET", "POST"]) def member_join(): if request.method == "POST": name = request.form.get("name", type=str) email = request.form.get("email", type=str) pass1 = request.form.get("pass", type=str) pass2 = request.form.get("pass2", type=str) if name == "" or email == "" or pass1 == "" or pass2 == "": flash("입력되지 않은 값이 있습니다.") return render_template("join.html", title="회원가입") if pass1 != pass2: flash("비밀번호가 일치하지 않습니다.") return render_template("join.html", title="회원가입") members = mongo.db.members cnt = members.count_documents({"email": email}) if cnt > 0: flash("중복된 이메일 주소입니다.") return render_template("join.html", title="회원가입") current_utc_time = round(datetime.utcnow().timestamp() * 1000) post = { "name": name, "email": email, "pass": hash_password(pass1), "joindate": current_utc_time, "logintime": "", "logincount": 0, } members.insert_one(post) return redirect(url_for("member.member_login")) else: return render_template("join.html", title="회원가입") @bluerprint.route("/login", methods=["GET", "POST"]) def member_login(): if request.method == "POST": email = request.form.get("email") password = request.form.get("pass") next_url = request.form.get("next_url") members = mongo.db.members data = members.find_one({"email": email}) if data is None: flash("회원 정보가 없습니다.") return redirect(url_for("member.member_login")) else: if check_password(data.get("pass"), password): session["email"] = email session["name"] = data.get("name") session["id"] = str(data.get("_id")) session.permanent = True if next_url is not None: return redirect(next_url) else: return redirect(url_for("board.lists")) else: flash("비밀번호가 일치하지 않습니다.") return redirect(url_for("member.member_login")) return "" else: next_url = request.args.get("next_url", type=str) if next_url is not None: return render_template("login.html", next_url=next_url, title="회원로그인") else: return render_template("login.html", title="회원로그인") @bluerprint.route("/logout") def member_logout(): try: del session["name"] del session["id"] del session["email"] except: pass return redirect(url_for('member.member_login')) ---------------------------------------------------------------------------------------------------- - write.html - {% extends "main.html" %} {% block contents %} <script> $(document).ready(function() { $("#summernote").summernote({ height: 300, minHeight: null, maxHeight: null, lang: "ko-KR", popover: { image:[], link:[], air:[] }, callbacks: { onImageUpload: function(image) { for(var i = 0; i < image.length; i++) { uploadImage(image[i]); } } } }); }); function uploadImage(image) { var data = new FormData(); data.append("image", image); var csrf_token = "{{csrf_token()}}"; $.ajaxSetup({ beforeSend: function(x, s) { if(!/^(GET|HEAD|OPTIONS|TRACE)$/i.test(s.type)) { x.setRequestHeader("X-CSRFToken", csrf_token) } } }); $.ajax({ url: "{{url_for('board.upload_image')}}", cache: false, contentType: false, processData: false, data: data, type:"post", success: function(url) { var image = $("<img>").attr("src",url).css('max-width', "900px"); $("#summernote").summernote("insertNode",image[0]); }, error: function(data) { console.log(data); alert(data); } }); } </script> <script> function checkForm() { if ($.trim($("#title").val()) == "") { alert("제목을 입력하세요"); $("#title").focus(); return false; } if ($.trim($("#summernote").val()) == "") { alert("내용을 입력하세요"); $("#summernote").focus(); return false; } } </script> <div style="padding: 50px 50px 50px 50px;"> <form name="form" method="post" action="{{url_for('board.board_write')}}" onsubmit="return checkForm()"enctype="multipart/form-data"> <input type="hidden" name="csrf_token" value="{{csrf_token()}}"> <div class="form-group"> <label for="name">작성자</label> <input class="form-control" id="name" type="text" name="name" value="{{session['name']}}" readonly> </div> <div class="form-group"> <label for="title">제목</label> <input class="form-control" type="text" name="title" id="title" placeholder="제목을 입력하세요"/> </div> <div class="form-group"> <label for="contents">내용</label> <textarea rows="8" class="form-control" name="contents" id="summernote" placeholder="내용을 입력하세요"></textarea> </div> <div class="custom-file"> <input class="custom-file-input" id="customFile" type="file" name="attachfile"> <label class="custom-file-label" for="customFile">파일선택</label> </div> <div class="text-center"><input class="btn btn-primary" type="submit" value="작성하기"></div> </form> </div> {% endblock %} ---------------------------------------------------------------------------------------------------- - edit.html - {% extends "main.html" %} {% block contents %} <script> $(document).ready(function() { $("#summernote").summernote({ height: 300, minHeight: null, maxHeight: null, lang: "ko-KR", popover: { image:[], link:[], air:[] }, callbacks: { onImageUpload: function(image) { for(var i = 0; i < image.length; i++) { uploadImage(image[i]); } } } }); }); function uploadImage(image) { var data = new FormData(); data.append("image", image); var csrf_token = "{{csrf_token()}}"; $.ajaxSetup({ beforeSend: function(x, s) { if(!/^(GET|HEAD|OPTIONS|TRACE)$/i.test(s.type)) { x.setRequestHeader("X-CSRFToken", csrf_token) } } }); $.ajax({ url: "{{url_for('board.upload_image')}}", cache: false, contentType: false, processData: false, data: data, type:"post", success: function(url) { var image = $("<img>").attr("src",url).css('max-width', "900px"); $("#summernote").summernote("insertNode",image[0]); }, error: function(data) { console.log(data); alert(data); } }); } </script> <div style="padding: 50px 50px 50px 50px;"> <form name="form" method="post" action="{{url_for('board.board_edit', idx=data._id)}}" enctype="multipart/form-data"> <input type="hidden" name="csrf_token" value="{{csrf_token()}}"> <div class="form-group"> <label for="name">작성자</label> <input class="form-control" type="text" name="name" value="{{session['name']}}" readonly /> </div> <div class="form-group"> <label for="title">제목</label> <input class="form-control" type="text" name="title" value={{data.title}}> </div> {% if data.attachfile %} <div class="form-check text-right"> <input type="checkbox" class="form-check-input" id="deleteoldfile" name="deleteoldfile"> <label class="form-check-label" for="deleteoldfile">첨부파일 삭제 ({{data.attachfile}})</label> </div> {% endif %} <div class="form-group"> <label for="contents">내용</label> <textarea rows="8" class="form-control" name="contents" id="summernote">{{data.contents}}</textarea> </div> <div class="custom-file"> <input class="custom-file-input" id="customFile" type="file" name="attachfile"> <label class="custom-file-label" for="customFile">파일선택</label> </div> <div class="text-center"><input class="btn btn-primary" type="submit" value="수정하기"/></div> </form> </div> {% endblock %} ---------------------------------------------------------------------------------------------------- - join.html - {% extends "main.html" %} {% block contents %} <script> function checkForm() { if ($.trim($("#name").val()) == "") { alert("이름을 입력하세요"); $("#name").focus(); return false; } if ($.trim($("#email").val()) == "") { alert("이메일을 입력하세요"); $("#email").focus(); return false; } if (!validateEmail($.trim($("#email").val()))) { alert("이메일 유효성이 올바르지 않습니다."); $("#email").focus(); return false; } if ($.trim($("#pass1").val()) == "") { alert("비밀번호를 입력하세요"); $("#pass1").focus(); return false; } if ($.trim($("#pass2").val()) == "") { alert("비밀번호를 입력하세요"); $("#pass2").focus(); return false; } if($.trim($("#pass1").val()) != $.trim($("#pass2").val())) { alert("비밀번호가 일치하지 않습니다."); $("#pass2").select().focus(); return false; } } </script> <div style="padding: 50px 50px 50px 50px;"> <form name="form" action="{{url_for('member.member_join')}}" method="POST" onsubmit="return checkForm()"> <input type="hidden" name="csrf_token" value="{{csrf_token()}}"> <div class="form-group"> <label for="name">이름</label> <input class="form-control" type="text" name="name" id="name"> </div> <div class="form-group"> <label for="name">이메일</label> <input class="form-control" type="text" name="email" id="email"> </div> <div class="form-group"> <label for="name">비밀번호</label> <input class="form-control" type="password" name="pass1" id="pass1"> </div> <div class="form-group"> <label for="name">비밀번호 확인</label> <input class="form-control" type="password" name="pass2" id="pass2"> </div> <div class="text-center"><input class="btn btn-primary" type="submit" value="가입하기" /></div> </form> </div> {% endblock %} ---------------------------------------------------------------------------------------------------- - login.html - {% extends "main.html" %} {% block contents %} <script> function checkForm() { if ($.trim($("#email").val()) == "") { alert("이메일을 입력하세요"); $("#email").focus(); return false; } if (!validateEmail($.trim($("#email").val()))) { alert("이메일 유효성이 올바르지 않습니다."); $("#email").focus(); return false; } if ($.trim($("#pass").val()) == "") { alert("비밀번호를 입력하세요"); $("#pass").focus(); return false; } return true; } </script> <div style="padding: 50px 50px 50px 50px;"> <form name="form" action="{{url_for('member.member_login')}}" method="POST" onsubmit="return checkForm()"> <input type="hidden" name="csrf_token" value="{{csrf_token()}}"> {% if next_url %} <input type="hidden" name="next_url" value="{{next_url}}" /> {% endif %} <div class="form-group"> <label for="email">이메일</label> <input class="form-control" type="text" name="email" id="email"> </div> <div class="form-group"> <label for="pass">비밀번호</label> <input class="form-control" type="password" name="pass" id="pass"> </div> <div class="text-center"><input type="submit" class="btn btn-primary" value="로그인"></div> </form> </div> {% endblock %} ---------------------------------------------------------------------------------------------------- - view.html - {% extends "main.html" %} {% block contents %} <div style="padding: 50px 50px 50px 50px;"> <table class="table table-bordered"> <tbody> <tr> <td colspan="2">{{result.title}}</td> </tr> <tr> <td>{{result.name}}</td> <td class="text-right">{{result.pubdate|formatdatetime}}</td> </tr> {% if result.attachfile %} <tr> <td>첨부파일</td> <td><a href="{{url_for('board.board_files', filename=result.attachfile)}}">{{result.attachfile}}</a></td> </tr> {% endif %} <tr> <td colspan="2"><div style="min-height: 200px;"></div>{% autoescape false %}{{result.contents}}{% endautoescape %}</td> </tr> </tbody> </table> <a class="btn btn-primary" href="{{url_for('board.lists', page=page, search=search, keyword=keyword)}}">리스트</a> {% if session["id"] == result.writer_id %} <a class="btn btn-danger float-right ml-2" href="{{url_for('board.board_delete', idx=result.id)}}">글삭제</a> <a class="btn btn-warning float-right" href="{{url_for('board.board_edit', idx=result.id)}}">글수정</a> {% endif %} </div> {% endblock %} ----------------------------------------------------------------------------------------------------
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
회원 중복처리 질문입니다.
@PostMapping("/new") public String join (@Valid MemberDTO form, BindingResult result) { if (result.hasErrors()) { return "Oops.."; } Address address = new Address(form.getCity(), form.getStreet(), form.getZipCode()); Member member = new Member(); member.setName(form.getName()); member.setAddress(address); try { memberService.join(member); } catch (IllegalStateException e) { return "회원 중복"; } return "Success"; } 회원중복 처리에 대해선 얘기가 없으셔서 혼자 생각해봐서 구현해봤는데요 실무에서도 보통 저렇게 컨트롤러에서 예외를 잡나요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part6: 웹 서버
어나니머스 타입
// LINQ 버전 레벨 2배 { var players = from p in _players where p.ClassType == ClassType.Knight && p.Level >= 50 orderby p.Level select new { Hp = p.Hp, Level = p.Level * 2 }; Console.WriteLine(); foreach (Player p in players) // 구문오류 { Console.WriteLine($"직업 : {p.classType}, 레벨 : {p.Level}, Hp : {p.Hp}, 공격력 : {p.Attack}"); } } 14:40 쯤에 select에서 new를 이용하여 레벨을 2배인 상태로 추출이 가능하다고 해서 직접 확인해보려 하니까 잘 안되네요 ㅠㅠ foreach문에서 구문오류를 확인해보니 'anonymous type: int Hp, int Level형식을 Player형식으로 변환할 수 없다'고 뜨네요. Player형을 쓰면 안된다는 것 같은데. 그러면 어떤 자료형을 써야하는지 감이 안잡힙니다.. Q1) foreach문의 코드를 어떻게 고쳐야 anonymous type을 출력할 수 있을까요? 레벨이 2배로 된 것을 눈으로 확인하고 싶습니다!
-
미해결UX/UI 시작하기 : Adobe XD 입문(Inflearn Original)
강의 내용도 너무 좋은데 혹시 연습할 만한 예제들을 올려주실 수 있을까요?
강의를 보고 따라하고 있습니다 그런데 몇가지 예제는 그냥 눈으로 볼 수 밖에 없는 몇가지가 있더라고요~ 강의 내용이 너무 좋기는 한데 예제파일도 혹시 올려주시면 감사할 것 같습니다
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
패키지 변경후에도 전 패키지가 실행됩니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 현재 메시지 부분을 공부하려고 하는데 파일을 실행하게 되면 전 패키지들이 실행이 됩니다. 크롬에서 8080으로 들어가게 되면 텍스트 관련 부분이 뜨게 되고 웨일을 가게 되면 타임리프 관련 창이 뜨게 되는데 현재 메시지 패키지를 공부하려고 하는데 포트 연결시 계속 전 패키지 파일이 연결이 됩니다. 무엇이 문제인지 잘 모르겠습니다. 아래와 같은 상황에서 링크를 누르면 이동은 되지 않습니다. (처음에는 무엇이 문제인지 몰라서 크롬으로 진행하다가 웨일로 하게 된건데 아래와 같은 상황이 되었습니다.) 인텔리제이를 꺼도 http8080으로 들어가면 저런 상황이 됩니다. 8080을 누가 쓰는지 확인 해보니 tnslsnr.exe라는 파일이 쓰고 있었습니다.
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
스프링 어노테이션과 mysql 테이블과의 우선순위 질문
안녕하세요, 강의를 듣다가 저는 데이터 베이스에서 먼저 테이블을 안전하게 생성한 후에 스프링에서 엔티티 클래스를 작성할 때 알맞은 어노테이션을 붙이는 식으로 구현하고 있습니다. 이때 실수로 데이터베이스의 해당 테이블에서는 기본키 전략으로 AI를 하지 않은 바람에 @Generatedvalue 를 사용했을 때 에러가 발생했는데, 보통 어노테이션을 통해 발생되는 하이버네이트 쿼리보다 mysql에서 기본으로 생성된 테이블 전략이 더 우선순위를 가진다고 볼 수 있나요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
상품 등록중 오류가 발생합니다
회원은 db에 잘 저장이 되는 상황에서 상품등록은 오류가 발생하여 질문합니다. 2022-04-22 21:35:40.173 ERROR 9460 --- [nio-8080-exec-3] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessApiUsageException: Unknown entity: com.sun.proxy.$Proxy111; nested exception is java.lang.IllegalArgumentException: Unknown entity: com.sun.proxy.$Proxy111] with root cause java.lang.IllegalArgumentException: Unknown entity: com.sun.proxy.$Proxy111 이런 오류가 발생합니다
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
예제문제가 안열려요
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
부트스트랩 CSS 적용
안녕하세요! 선생님:) 현재 강의에서 CSS 적용이 안돼서 부트스트랩 파일을 /static 이 아닌 /templates 안에 넣었더니 적용이 됩니다! static에 넣었을 경우 인식이 안되는 경우는 왜일까요?
-
미해결Svelte.js SPA 영화 검색 프로젝트
강사님 질문인데요
npx degit sveltejs/template my-svelte-project이렇게 해서 svelte를 설치하면 롤업이 있던데 이게 스노우팩 대체로 써도 되나요?그리고 vite랑 롤업 둘중에 뭐가 더 현시점에서 사용을 추천하시나요?
-
미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
설계방식
안녕하세요 ㅎㅎ 강의 잘 듣고있습니다 정말 많은 도움을 받고있네요 . 질문이 있는데요. 복잡한 어플 배포 방식에서 두가지 소개하셨는데 , 제가 보기로 두개다 port 번호가 달랐는데 , 왼쪽에 url 이 같지만 end포인트도 port 번호를 다르게 하고 , 오른쪽엔 port 번호만 다르게 설정하는 방식인가요 ??
-
해결됨Vue.js 시작하기 - Age of Vue.js
코드 순서 질문
new Vue를 통해 인스턴스가 만들어져 root컴포넌트가 생긴다고 알고있는데, 이 root컴포넌트가 생성되기전에 vue.component를 통해 하위 컴포넌트를 등록하셨는데, 이게 순서가 정확히 어떻게 되는건가요?
-
해결됨Vue.js 시작하기 - Age of Vue.js
변수명 질문
propsdata라는 똑같은 이름을 중복으로 사용해도 큰 문제가 없는건가요? 이렇게 짜면 appheader의 propsdata인지 appcontent의 propsdata인지 구분이 힘들꺼같아서요 js가 태그이름에 따라서 알아서 식별해주나요?
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 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>
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 챗봇 사이트 만들기
질문있어요!
채팅창 설정해준 높이값 넘어가면 Overflow:auto로 설정했잖아요 그 상태에서 채팅치면 최근에 입력한 채팅이 보였으면 좋겠는데 스크롤을 내려서 확인해야하더라구요 어떻게하면 좋을까요? 그리고 배포는 어떻게하시는지 궁금해요 혼자만들고 배포해서 깃허브에 올리고싶은데 서버랑 클라이언트배포 어떻게하시는지 궁금합니다! 항상 헤로쿠에서 서버 배포할 때 이 에러때문에 올리질 못하고있어요 ㅠ remote rejected master -> master (pre-receive hook declined)
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
/{id}가 뭘까요?
안녕하세요. members/{id}에서 /{id}가 뭘 뜻하는거죠? members/100이 아니라 members?id=100 아닌가요? 제 생각에는 해당 메서드를 호출할 경우 뒤에 아이디값을 파라미터로 넘겨 주는 것 같은데 /는 디렉토리 표시 같아서 헷갈려서 질문 남깁니다. 감사합니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
테이블 생성은 되지만, 데이터 삽입이 되지 않습니다!!ㅜㅜ!!
package jpabook.jpashop;import org.assertj.core.api.Assertions;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.test.annotation.Rollback;import org.springframework.test.context.junit4.SpringRunner;import org.springframework.transaction.annotation.Transactional;import static org.junit.Assert.*;@RunWith(SpringRunner.class) //스프링과 관련된 것을 테스트할 것임을 JUnit에게 알려줌@SpringBootTestpublic class MemberRepositoryTest { @Autowired MemberRepository memberRepository; //의존성 주입 @Test @Transactional @Rollback(value = false) public void MemberRepositoryTest() throws Exception { //given Member member = new Member(); member.setUsername("memberA"); //when Long saveId = memberRepository.save(member); Member findMember = memberRepository.find(saveId); //then Assertions.assertThat(findMember.getId()).isEqualTo(member.getId()); Assertions.assertThat(findMember.getUsername()).isEqualTo(member.getUsername()); }} spring: datasource: url: jdbc:h2:tcp://localhost/~/jpashop username: sa password: driver-class-name: org.h2.Driver jpa: open-in-view: false hibernate: ddl-auto: create properties: hibernate:# show_sql: true format_sql: truelogging.level: org.hibernate.SQL: debug# org.hibernate.type: trace
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
NODE_ENV 확인하는 방법?
저번에도 비슷한 질문드렸는데 아무래도 노드 16버전 때문인지 강의랑 똑같이 할때 permission denied 뜹니다. sudo가 명령어 상에 없는 것 같다고 답 주셔서 package.json 에 start에다가 그냥 sudo를 직접 넣어 주니까 실행은 됩니다. sudo su로 들어가서 npm start, pm2 monit 전부 강의 화면처럼 나오구요 근데 궁금한게 cross-env로 환경변수를 설정해 주면 process.env 안에 NODE_ENV가 들어가야 되는게 아닌지요? 확인해 보니까 없는 것 같은데 잘못 된건 가요? 확인은 echo $NODE_ENV 해보니 안뜨구 repl 에서 process.env 쳐봐도 안에 NODE_ENV는 안보이네요?
-
미해결Nuxt.js 시작하기
GitHub연동 질문
지금까지 무난하게 잘 따라왔는데, 배포에서 잘 안되어서 첫질문 드려봅니다. 이번차수에~ github연동에서 아래처럼 에러가 나고 강의처럼 연동이 안됩니다. 구글링을 해보면서 해결을 해보려했지만, 잘 안됩니다.확인 한번 부탁드립니다.구글링해보다보니 22년 4월 16일부터 Auth부분이 달라진거 같은데..맞다면 다른 방법 안내 한번 부탁드려요.(https://kanaxx.hatenablog.jp/entry/2022/04/18/011926)ㄱ