수강이 제한됩니다.
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 해결됨파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
antd로 회원가입 폼을 만들때 질문입니다
<Form.Item label="아이디" name="username" rules={[{ required: true, message: "Please input your username!" }]} //rules을 통해 유효성검사로직이 들어가 잇다 //hasFeedback //username의 끝 부분에 체크표시? {...fieldErrors.username} > <Input />위의 코드에서 {...fieldErrors.username} 은 spread한 것을 하나의 오브젝트로 {validateStatus: "error", help: "User with this username already exists."} 이렇게 구성되어 있는걸로 이해가 되는데 form.item에서는 각 항목마다 쉼표도 없이 그냥 띄어쓰기로 속성을 정의하는데 {...fieldErrors.username}이렇게 표현한 것이 어떻게 바로 속성으로 적용되는지 궁금해서 질문드립니다!
- 미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
Azure pipeline을 구축시 환경 변수 설정하는 위치
항상 강의 감사하게 듣고 있습니다.해당 강의에는 azure CI/CD 내용은 없지만 구축해서 사용하려고 합니다.그런데 docker를 구동할때 여러 환경변수(azure_account_name, azure_account_key, DEBUG, ALLOWED_HOST 등)들을 옵션으로 설정하게 되는데, azure에서 pipeline을 구축할 경우 해당 변수들을 어떻게 설정하는지 모르겠습니다.dev.azure.com에서 Pipelines->Variables 에서 설정하면 되는 것으로 알고 있었는데 변수가 전혀 먹지를 않네요.어떻게 해야 할런지요?참고로 yml을 사용하지 않고 classical하게 GUI로 설정하고 있습니다. 추가로 collectstatic을 별도의 bash shell이나 command line을 통해서 하는게 좋은 건지, dockerfile 내부에서 하는게 좋은 건지 말씀부탁드리겠습니다.고맙습니다.
- 미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
장고 쉘 강의 중 jupyter notebook 연결 질문입니다.
안녕하세요! 강의 수강 중 질문입니다.ipython shell 까지는 잘 작동하는데 jupyter notebook 부터 저런 오류가 발생합니다. 처음 jupyternotebook 열릴 때 첫 화면 경로가 askcompany가 아니고 제가 사용하던 폴더가 뜨던데 어떤점때문에 이런 오류가 발생하는걸까요?
- 미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
MySQL 질문
안녕하세요!! 데이터베이스를 SQLite 말고 MySQL을 사용하려고 하는데요.혹시 해당 강의에서 MySQL에 테이블을 생성하고 싶으면,MySQL 설치 후에 settings.py의 DATABASES 부분만 변경하면 되는건가요?아님 다른 부분도 수정해주어야 할 부분이 많나요??강의보다가 궁금해서 질문드려봅니다!! 감사합니다 ^~^
- 미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
React을 websocket 클라이언트로 활용
선생님 안녕하세요.저는 사용자 정보를 websocket에서 받아 사용을 해야 하는데요, 아무리 해도 웹소켓에서 리턴한 데이터를 화면에 뿌려줄수가 없습니다..대략적인 코드는 이렇습니다. const ws = new WebSocket("wss://localhost:8080"); ws.onopen = () => ws.send('{"rqtype": "0000", "token": ""}'); ws.onmessage = (e) => { // e.Data를 Box안에 뿌리고 싶어요. }; return ( <Box> <Header emp_no={""} name={"유저"} /> </Box> );제 짐작으로는 ajax로 Django로 e.Data를 보낸 다음 화면에 뿌려주는 방법을 찾아야 할것 같은데.. 혹시 다른 방법이 있다면 조언 부탁드립니다.감사합니다.#react #websocket #Django
- 해결됨파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
suggestion에서 onFollowUser을 수행할때 에러 질문입니다!
import React from "react"; import { Button, Avatar } from "antd"; import "./Suggestion.scss"; //프레젠테이션 컴포넌트라 할 수 있다 export default function Suggestion({ suggestionUser, onFollowUser }) { const { username, avatar, is_follow } = suggestionUser; return ( <div className="suggestion"> <div className="avatar"> <Avatar icon={<img src={avatar} alt={`${username}'s avatar`} />} /> {/* <UserAddOutlined /> */} </div> <div className="usesrname">{username}</div> <div className="action"> {is_follow && "팔로잉 중"} {!is_follow && ( <Button size="small" onClick={() => onFollowUser(username)}> Follow </Button> )} </div> </div> ); } import React, { useEffect, useState } from "react"; import "./SuggestionList.scss"; import { Card } from "antd"; import Suggestion from "./Suggestion"; import { useAppContext } from "store"; import Axios from "axios"; import useAxios from "axios-hooks"; export default function SuggestionList({ style }) { const { store: { jwtAccessToken }, } = useAppContext(); const [userList, setUserList] = useState([]); //axios을 좀더 일반적으로 쓰기위한 훅을 이용 useAxios hook //useEffect자체가 필요없다 요청자체를 useAxios가 보내게 되니까? //useAxios는 조회를 할때는 유용한다 post을 할때는 코드가 복잡해진다? const headers = { Authorization: `Bearer ${jwtAccessToken}` }; const [{ data: origUserList, loading, error }, refetch] = useAxios({ url: "http://127.0.0.1:8000/accounts/suggestions/", headers, }); useEffect(() => { if (!origUserList) setUserList([]); else setUserList(origUserList.map((user) => ({ ...user, if_follow: false }))); }, [origUserList]); const onFollowUser = (username) => { console.log("성공"); try { Axios.post( "http://127.0.0.1:8000/accounts/follow/", { username }, { headers } ) .then((response) => { setUserList((prevUserList) => { return prevUserList.map((user) => { if (user.username === username) { return { ...user, is_follow: true }; } else return user; }); }); }) .catch((error) => { console.log(error); }); } catch (error) { console.log("여기 에러야 :", error); } }; return ( <div style={style}> {/* 정말 빠르게 지나갈 것이다 */} {loading && <div>Loading...</div>} {error && <div>로딩중에 에러가 발생했습니다.</div>} {/* <button onClick={() => refetch()}>Reload</button> */} <Card size="small" title="Suggestions for you" // extra={<a href="#">More</a>} style={{ width: 300, }} > {userList.map((suggestionUser) => ( <Suggestion key={suggestionUser.username} suggestionUser={suggestionUser} onFollowUser={onFollowUser} //속성값으로 주입함 /> ))} </Card> </div> ); } 첫번째 블럭이 Suggestion.js이고 두번째 블럭은 SuggestionList.js입니다.follow 버튼을 눌렀을때 이러한 에러가 뜨기 시작했는데 왜 그런걸까요ㅠㅠ 분명 원래는 잘 되었는데 학습진도를 더 나가다 보니 어느순간 작동하지 않던데 그 이유를 잘 모르겠습니다 서버쪽으로 요청도 가지 않는거 같은데 서버쪽의 문제일 수 있을까요??
- 해결됨파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
gunicorn으로 동작시 'latin-1' 에러 발생
안녕하세요 개발을 진행하던 중 오류를 겪고 있어서 한가지 여쭤보려고 합니다.제가 wsgi를 gunicorn으로 서버를 돌리려고 하는데, python manage.py runserver 명령어로 서버를 돌릴때는 에러를 겪지 않고 기능들이 정상작동 되는것을 확인 하였습니다.하지만, gunicorn으로 서버를 돌리는 경우'latin-1' codec can't encode characters in position 55-56: ordinal not in range(256)해당 에러를 겪고 있습니다. (서칭해본 결과 gunicorn은 문자 인코딩을 latin-1로 설정 되어있다고 해서 환경변수를 바꿔주려고 시도를 해보았으나 실패하였습니다. gunicorn --env LANG=en_US.UTF-8 tutorial.wsgi.local:application)현재 settings, wsgi를 분리해 놓은 상태입니다.wsgi/local.pyimport os import sys import importlib from django.core.wsgi import get_wsgi_application os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'tutorial.settings.local') application = get_wsgi_application()settings/local.pyimport os from .base import * DEBUG = True ALLOWED_HOSTS = ['*'] DEFAULT_CHARSET='utf-8' WSGI_APPLICATION = 'tutorial.wsgi.local.application' DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR , 'db.sqlite3'), }, } 지금 에러를 겪는 기능은 회원가입 기능이며 serealizer.save()에서 에러를 겪는 다고 생각도 듭니다.(전화번호 필드만 양방향 암호화를 설정하였습니다. 암호화, 복호화가능하게) 그러나 runserver후 에는 정상작동이 되기때문에 정확한 원인파악이 어렵습니다. (다른 분들 블로그를 확인하면 gunicorn을 설치하고 따로 설정한게 없이 정상작동 되는거 같습니다.)gunicorn으로 서버를 돌리는 경우gunicorn --env LANG=en_US.UTF-8 tutorial.wsgi.local:application --bind 0:8080gunicorn --bind 0:8080 tutorial.wsgi.local:application2가지 명령어로도 실행 해보았으나 동일한 에러를 보여주고 있습니다.회원가입 api로 요청시header response allow: POST,OPTIONS connection: close content-length: 96 content-type: application/json date: Mon,27 Feb 2023 05:54:52 GMT referrer-policy: same-origin server: gunicorn vary: Accept,Cookie x-content-type-options: nosniff x-frame-options: DENY body response'latin-1' codec can't encode characters in position 55-56: ordinal not in range(256)도움을 주신다면 감사하겠습니다.
- 미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
ipython, jupyter notebook 오류 질문 드립니다 ㅠㅠ
안녕하세요수업을 진행 하던 중 ipython과 jupyter notebook에서 오류가 발생하고 있습니다.이유가 무엇일까요? django를 설치 했는데도 오류가 발생합니다 도와주세요~~
- 해결됨파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
로그인 폼을 만들고 로컬 스토리지에 jwt저장하기 강의에서 질문입니다!
import React, { useState } from "react"; import { Card, Button, Form, Input, notification } from "antd"; import { useHistory } from "react-router-dom"; import Axios from "axios"; import { SmileOutlined, FrownOutlined } from "@ant-design/icons"; import useLocalStorage from "utils/useLocalStorage"; export default function Login() { const history = useHistory(); const [jwtAccessToken, setJwtAccessToken] = useLocalStorage( "jwtAccessToken", "" ); console.log("loaded Token: ", jwtAccessToken); // 왜 이게 두번이나 출력되는 것이지? const onFinish = (values) => { async function fn() { const { username, password } = values; const data = { username, password }; try { //응답을 꼭 받아야 한다. 토큰을 받아야 하니까 const response = await Axios.post( "http://127.0.0.1:8000/accounts/token/", data, { headers: { "Content-Type": "application/json" } } ); // const { data: token } = response; 이런 방식은 아래랑 다르다 response에서 data을 꺼내서 이름을 token이라 짓는 것 // const token = response.data 와 일치하며 밑에 녀석은 // const jwtAccessToken = response.data.access 과 일치한다 const { data: { access: jwtAccessToken }, } = response; setJwtAccessToken(jwtAccessToken); notification.open({ message: "로그인 성공!", icon: <SmileOutlined style={{ color: "#108ee9" }} />, }); // history.push("/accounts/login"); //TODO: 이동주소 } catch (error) { console.log(error); if (error.response) { notification.open({ message: "로그인 실패!", icon: <FrownOutlined style={{ color: "#ff3333" }} />, description: "아이디/암호를 확인해 주세요.", onClick: () => { console.log("Notification Clicked!"); }, }); } } } fn(); }; return ( <Card title="login"> <Form labelCol={{ span: 8 }} //부트스트랩은 한 행이 12 컬럼인데 antd는 24컬럼임 wrapperCol={{ span: 16 }} style={{ maxWidth: 600 }} onFinish={onFinish} autoComplete="off" > <Form.Item label="Username" name="username" rules={[{ required: true, message: "Please input your username!" }]} //rules을 통해 유효성검사로직이 들어가 잇다 > <Input /> </Form.Item> <Form.Item label="Password" name="password" rules={[ { required: true, message: "Please input your password!" }, { min: 5, message: "5자리 이상 해주세요" }, // 한글자 한글자 들어갈때마다 검사해준다. ]} > <Input.Password /> </Form.Item> {/* //8칸 이동하고 16칸을 쓰겠다 */} <Form.Item wrapperCol={{ offset: 8, span: 16 }}> <Button type="primary" htmlType="submit"> Submit </Button> </Form.Item> </Form> </Card> ); } 안녕하세요 강사님!! 위에서 15번째 줄에 있는 console.log("loaded Token: ", jwtAccessToken);이 부분이 페이지의 콘솔창에서 두번이나 나타납니다... 왜 그런지 알 수 있을까요?? 새로고침을 했을때도 두번 나타나고 submit을 했을 때도 2번 출력됩니다.아 ! 그리고 simplejwt토큰을 사용중 입니다!
- 해결됨파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
jsconfig 오류 질문입니다!
{ "compilerOptions": {"baseUrl": "src" },"include": ["src"]} keonhongkoo@keonhongui-MacBookAir frontend % yarn startyarn run v1.22.19$ react-scripts startnode:internal/modules/cjs/loader:1325 throw err; ^SyntaxError: /Users/keonhongkoo/Desktop/instagram/frontend/jsconfig.json: Unexpected token / in JSON at position 75 at parse (<anonymous>) at Module._extensions..json (node:internal/modules/cjs/loader:1322:39) at Module.load (node:internal/modules/cjs/loader:1117:32) at Module._load (node:internal/modules/cjs/loader:958:12) at Module.require (node:internal/modules/cjs/loader:1141:19) at require (node:internal/modules/cjs/helpers:110:18) at getModules (/Users/keonhongkoo/Desktop/instagram/frontend/node_modules/react-scripts/config/modules.js:126:14) at Object.<anonymous> (/Users/keonhongkoo/Desktop/instagram/frontend/node_modules/react-scripts/config/modules.js:142:18) at Module._compile (node:internal/modules/cjs/loader:1254:14) at Module._extensions..js (node:internal/modules/cjs/loader:1308:10)Node.js v18.14.1error Command failed with exit code 1.info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command. 이렇게 결과가 출력되는데 해결책이 안보이네요... vscode도 재시작해봤습니다ㅠ
- 미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
아나콘다 버전 관련 문의 드립니다~!
안녕하세요~!아나콘다를 설치하면서 두가지 정도 질문이 있습니다1) 2023.02.22날짜로 아나콘다 최신판을 설치하는데 그림과 같이 옵션사항에 환경변수 체크가 되지 않습니다 ㅠㅠ 업데이트 되면서 바뀐것인지 아나콘다 최신판에서 이 옵션을 선택하지 않아도 괜찮을까요??2) 2023.02.22날짜로 아나콘다 최신판에서는 파이썬 버전이 3.9버전인데 파이썬 공식버전으로는 3.11까지 배포가 되었습니다 버전 차이가 많이 나도 아나콘다를 설치하는게 사용에 더 편리할까요??
- 미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
migrate 질문
- 여러분의 질문을 고대하고 있습니다. :-)- 질문 전에 검색을 먼저 해보세요. 사람 사는 게 다 비슷하다는 것을 알게 됩니다.- 예의는 거침없이 질문하기 위한 최고의 발명품입니다.- 100개의 설명이 스크린샷 한방 보다 못할 수 있습니다.- 코드를 첨부하면 전세계 누구나 이해할 수 있는 질문이 됩니다.- 하나의 질문에는 하나의 주제를 담아야 답변도 예리해집니다.- 시행착오를 알려주시면 곧 바로 원하는 문제에 집중할 수 있습니다. 안녕하세요. 선생님 강의 덕분에 개발공부 하는 데 있어 많은 도움을 받고 있습니다. 질문 읽고 답변 달아주셔서 정말 감사합니다.제 질문은 이렇습니다. 5분대에서 startapp 하고 migrate 명령을 쓰셨는데, 저희는 models.py 를 만지지 않았는데도 불구하고 왜 migrate를 하는 것인지 궁금합니다.- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
- 미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
리액트 업로드 후에 로그인이 되지않습니다
화이트리스트에 등록을 해놨는데 어떤게 빠져있는건지 모르겠습니다...
- 해결됨파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
혹시 강의에서 쓰이는 폰트를 알 수 있을까요?
jetbrains Mono 를 사용하고 있는데, 강의에서(파이참에서) 사용하시는 폰트가 두껍고 가독성도 좋은 것 같아 사용하고 싶습니다. 혹시 가능하시면 알려주세요!
- 해결됨파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
함수 컴포넌트와 필수 Hook에서 setValue({value1:10}) 관련 질문이요!
function App2() { const [value1, setValue1] = useState(0); const [value2, setValue2] = useState(0); const [value, setValue] = useState({ value1: 0, value2: 0 }); const onClick = () => { setValue({ value1: 10 }); }; return ( <div> Hello App2 <hr /> {JSON.stringify(value1)} {JSON.stringify(value2)} {JSON.stringify(value.value1)} <button onClick={onClick}>클릭</button> </div> ); } export default App2; 여기서 onClick을 수행할때 왜 value.value1의 값이 변경되는 건가요?? 첫번째에 useState(0)으로 만든 value1은 어떻게 해야 값의 변경이 되는거죠??
- 미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
docker pip 설치에서 에러가 뜹니다
강의내용의 pord.txt 가 같은데 에러가 뜨네요 django~=3.0.0 djangorestframework djangorestframework-jwt django-cors-headers django-pydenticon pillow
- 미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
allow host 아이피 주소를 같게 입력하였는데
이런오류가 뜨는데 어떻게 해결하면 좋을까요
- 미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
도커파일로 장고 프로젝트 빌드 하고 런할때 manage.py 가 없다는 에러가 발생 합니다
manage.py 가 없다고 나와요 vs code:
- 미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
윈도우즈인데 폴더 찾기가 어려워요
아래처럼 폴더가 틀리다는데 어떻게 폴더를 설정해야 될까여? PS C:\prac-docker> tree OS 볼륨에 대한 폴더 경로의 목록입니다. 볼륨 일련 번호는 22D0-591D입니다. C:. └─html PS C:\prac-docker> docker run -d -p 8080:80 --volume %cd%\html:/prac-docker/html --name mynginx nginx docker: Error response from daemon: %!c(string=is not a valid Windows path)d%!\(MISSING)html. See 'docker run --help'. PS C:\prac-docker> docker run -d -p 8080:80 --volume %cd%\html:/prac-docker/html --name mynginx nginx docker: Error response from daemon: %!c(string=is not a valid Windows path)d%!\(MISSING)html. See 'docker run --help'. PS C:\prac-docker>
- 해결됨파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
pandas 로 csv 읽어서 django model 에 저장하는데 속도 느려지는 이슈 있음. 질문드립니다.
200여개의 csv 파일이 있습니다. (용량은 각각 1메가에서 120메가 - 최대 100만건 데이터 등등 ). 결측치 가 있어서 판다스 에서 불러들여서 정리하고 for 반복문으로 파일 개별적으로 읽어 들여와 장고 모델에 save() 로 입력시키는 작업을 진행하고 있습니다.초반 10여개 파일까지는 제법 속도가 나오는데 (7만행 데이터 20분 소요) 이후로 속도가 급격하게 감소해서 24시간 돌려서 30메가 파일 겨우 저장 중입니다(1건에 1초씩 걸리네요 ㅠㅠ). 개발중이라 로컬에 있는 장고 내장 sqlite 사용 했습니다. 속도를 좀 더 빠르게 하는 방법이 있을까요? 3일째 검색 해봤는데 별다른 해결책이 보이지 않아서 질문 남겨 봅니다. app.py # new 폴더에 정리된 csv 파일을 읽어서 DB에 저장 import pandas as pd # django 프로젝트에 있는 settings.py 파일을 읽어서 환경변수로 설정 import os os.environ.setdefault("DJANGO_SETTINGS_MODULE", "dbking.settings") import django django.setup() #django 프로젝트에 있는 models.py 파일에서 BasicData 클래스를 읽어온다 from common.models import BasicData # new 폴더에 있는 파일명을 읽어서 product 변수에 리스트에 저장 product_list = os.listdir("./script/newdb") # product_list 에 csv 파일 정렬(오름차순) for x in product_list: # csv 파일 하나씩 읽어오기 df = pd.read_csv("./script/newdb/" + x, encoding="cp949") # 결측치를 0으로 채운다 df = df.fillna(0) for a in list_of_csv: # 파일마다 컬럼수가 달라서 remark1, remark2 라는 예비컬럼 2개 추가 # -> 인덱스 에러 나는 경우 0 으로 저장 if a[16] is None: a.insert(16, 0) a.insert(17, 0) elif a[17] is None: a.insert(17, 0) # DB에 저장 try: db_insert = BasicData( opnSvcId = a[2], opnSfTeamCode = a[3], mgtNo = a[4], fileNumber = fileNumber, businessType = businessType, opnSvcNm = a[1], apvPermYmd = a[5], confirmNumber = a[6], businessCondition = a[7], siteTel = a[8], sitePostNo = a[9], siteWhlAddr = a[10], rdnWhlAddr = a[11], rdnPostNo = a[12], bplcNm = a[13], latitude = a[14], longitude = a[15], remark1 = a[16], remark2 = a[17], ) i += 1 # print(i) except Exception as e: print("쿼리", e) continue #DB에 저장 입력 try: db_insert.save() except Exception as e: print("저장중에러",e) continue from django.db import models class BasicData(models.Model): # 개방서비스아이디 opnSvcId = models.CharField(max_length=100) #개방자치단체코드 opnSfTeamCode = models.CharField(max_length=10) # 관리번호 mgtNo = models.CharField(max_length=100) #파일번호 fileNumber = models.IntegerField() #업종명 businessType = models.CharField(max_length=100) #개방서비스명 opnSvcNm = models.CharField(max_length=100) #인허가일자 apvPermYmd = models.DateField() #영업상태구분코드(1-정상, 2-폐업, 3-휴업, 4-전환) confirmNumber = models.IntegerField() #영업상태명 businessCondition = models.CharField(max_length=100) #소재지전화 siteTel = models.CharField(max_length=100) #우편번호 sitePostNo = models.CharField(max_length=100) #주소 siteWhlAddr = models.CharField(max_length=100) #도로명주소 rdnWhlAddr = models.CharField(max_length=100) #도로명우편번호 rdnPostNo = models.CharField(max_length=100) #사업장명 bplcNm = models.CharField(max_length=100) # 위도 latitude = models.FloatField() # 경도 longitude = models.FloatField() #비고1 remark1 = models.CharField(max_length=100) #비고2 remark2 = models.CharField(max_length=100) # 생성시점 created = models.DateTimeField(auto_now_add=True) update = models.DateTimeField(auto_now=True) def save(self, *args, **kwargs): queryset = BasicData.objects.filter(mgtNo__exact=self.mgtNo) # 중복된 이름이 없을 때만 저장 if len(queryset) == 0: super().save(*args, **kwargs) print('> Created new category') # if '&' in self.addr: # self.addr = self.addr.replace('&', ' ') # self.save() # 중복된 카테고리 있을 시 저장 안함 else: print('> Cannot create category with existing name') def __str__(self): return self.name