묻고 답해요
130만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
No post matches the given query
강사님 안녕하세요, 오류가 발생해서 질문 드립니다 ㅜㅜhttp://127.0.0.1:8000/post/1/로 접속을 하면계속 이와 같은 오류가 뜹니다 ㅠㅠ이렇게 분명 포스트가 db 에 저장되어있는데 말이죠 .. ㅠㅠ이전에 작성했었다가 사용자를 다시 지우면서 같이 삭제된 포스팅이 있는데 그것 때문에 pk 값이 꼬인 것은 아니겠죠? urlpatterns = [ path('post/new/', views.post_new, name='post_new'), path('post/<int:pk>/', views.post_detail, name='post_detail') ](제 앱 이름은 myblog 로 해두었습니다)from django.contrib import messages from django.contrib.auth.decorators import login_required from django.shortcuts import get_object_or_404, redirect, render from .forms import PostForm from .models import Post # Create your views here. @login_required def post_new(request): if request.method == 'POST': form = PostForm(request.POST, request.FILES) if form.is_valid(): post = form.save(commit=False) post.author = request.user post.save() # 이걸 나중에 하면 안되나? post.tag_set.add(*post.extract_tag_list()) messages.success(request, "포스팅을 등록했습니다.") return redirect("/") # TODO : get_absolute_url 활용 else: form = PostForm() return render(request, "myblog/post_form.html", { "form": form, }) def post_detail(request, pk): post = get_object_or_404(Post, pk=pk) return render(request, "myblog/post_detail.html", { "post" : post, }) views.pyimport re from django.conf import settings from django.db import models from django.urls import reverse # Create your models here. class Post(models.Model): author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE) photo = models.ImageField(upload_to="myblog/post/%Y/%m/%d") caption = models.CharField(max_length=1000) tag_set = models.ManyToManyField('Tag', blank=True) location = models.CharField(max_length=100) def __str__(self): return self.caption def extract_tag_list(self): tag_name_list = re.findall(r"#([a-zA-Z\dㄱ-힣]+)", self.caption) tag_list = [] for tag_name in tag_name_list: tag, _ = Tag.objects.get_or_create(name=tag_name) tag_list.append(tag) return tag_list def get_absolute_url(self): return reverse("myblog:post_detail", args=[self.pk]) class Tag(models.Model): name = models.CharField(max_length=50, unique=True) def __str__(self): return self.namemodels.py이상한 부분은 없는 것 같습니다만 왜 이러는지 모르겠네요..ㅠㅠ그런데 또 쌩뚱맞은 http://127.0.0.1:8000/post/5/ url 을 입력하면 아래와 같이 다른 오류가 뜹니다.. 감사합니다 ! ㅠㅠ
-
미해결작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지
static/base.css파일을 인식을 못합니다
이전 강의 내용까지는 다 되었고 개발자 모드 들어가서 뜯어봐도 클래스 값이랑 다 지정 잘 되있고 setting파일, head 파일 전부 오타 없는걸 5번은 확인한것 같습니다. 그런데 base.css에 옮긴것만 되지 않습니다.답답해서 static 파일 및 base.css를 삭제해도 문제 없이 css만 없는채로 만들어지는데 어떻게 해결하나요?개발환경은 구름ide를 활용하고 있는데 혹시 이게 문제가 될 수 있을까요?인터넷의 자주 실수하는 해결방법은 모두 해보았습니다
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
sendgrid 메일 발송이 안됩니다 ㅠㅠ
7개월 전에 이 기능을 구현을 했고, python shell 로 메일보내서 1 확인 후 메일 확인, 실제로 회원가입 후 메일 발송되는 것까지 확인을 했습니다.sendgrid 회원가입은 구글 계정으로, sender 계정 이메일은 naver 이메일로 하였었구요. send_grid_api_key 값은 잘 지정해주었습니다 ㅜㅜ 아직도 python shell 에서 메일을 보내보면 1이 잘 뜨는데 메일이 발송되지 않습니다.. 스팸메일함 전체메일함 다 확인했는데도 안되네요 ㅜㅜㅜㅜ혹시 몰라서 sender authentication 부분 첨부합니다 ㅜㅜclass User(AbstractUser): class GenderChoices(models.TextChoices): MALE = "M", "남성" #전자는 DB에 저장되는 값, 후자는 실제 보여지는 값 FEMALE = "F", "여성" sns_url = models.URLField(blank=True) bio = models.TextField(blank=True) phone_number = models.CharField(max_length=13, blank=True, validators=[RegexValidator(r"^010-?[1-9]\d{3}-?{4}$")]) gender = models.CharField(max_length=1, blank=True, choices=GenderChoices.choices) avatar = models.ImageField(blank=True, upload_to="accounts/avatar/ $Y/%m/%d") def send_welcome_email(self): subject = render_to_string("accounts/welcome_email_subject.txt", { "user": self, }) content = render_to_string("accounts/welcome_email_content.txt", { "user": self, }) sender_email = settings.WELCOME_EMAIL_SENDER send_mail(subject, content, sender_email, [self.email], fail_silently=False) # SEND GRID 설정 SENDGRID_API_KEY = os.environ.get("SENDGRID_API_KEY") EMAIL_HOST = 'smtp.sendgrid.net' EMAIL_HOST_USER = 'apikey' EMAIL_HOST_PASSWORD = SENDGRID_API_KEY EMAIL_PORT = 587 EMAIL_USE_TLS = True WELCOME_EMAIL_SENDER = "신상정보라가렸습니다!!@naver.com"각각 models.py 와 common.py 입니다 ㅜㅜ
-
미해결작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지
안녕하세요 19강 디버깅 설정 질문있습니다.
말씀해주신대로 설정을 하고 manage.py파일을 우클릭해서 디버그 실행했더니 아래와 같이 뜨네요..혹시 manage.py를 디버깅 실행하고 위 처럼 manage라는 설정이 하나 더 생기긴했는데, 저 설정때문에 그런 것일까요?
-
미해결Vue.js - Django 연동 웹 프로그래밍 (실전편)
배포 관련 질문입니다
안녕하세요 강사님, 혹시 배포 관련 강의는 따로 제작 안 하셨을까요? 혹시나 있다면 구매해서 학습하고싶어서요..각각 배포하는 게 msa 방식 맞나요?그냥 django 배포방법(주로 docker을 이용하는 것 같습니다..), + vue 배포방법 이용해서 배포하면 될까요? 그리고 nginx 는 웹 서버인데 django 배포시 고려해주어야 하는지요..또, 각각 배포하게 되면 둘을 연결시키는 건 또 따로 해주어야 하는지 궁금합니다..
-
미해결Vue.js - Django 연동 웹 프로그래밍 (실전편)
formdata 와 json responser
안녕하세요 강사님, 그러면프론트엔드 서버에서 백엔드 서버로 데이터를 전송할 때는 formdata 를 이용해서 보내주고,백엔드 서버에서 프론트엔드 서버로 json 응답을 반환하는 건가요? ㅠㅠ 개념이 조금 어렵네요......질문이 너무 많아서 죄송합니다 ㅜㅜ
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
502 bad gateway
강사님 안녕하세요강사님 강의 덕분에 저 혼자서 페이지도 만들고 nginx 사용해서 서버까지 배포해보았습니다.다름이 아니라 3일전 까지만 해도 느리긴 했지만 잘 되던 서버가오늘 서버내의 기능을 사용할려고 하니 502 bad gateway를 내 뱉으면서 멈춰버립니다.(되다가 안되다가 반복함)그래서 error 로그를 찾아보니2023/11/01 00:20:22 [error] 10930#10930: *232 upstream prematurely closed connection while reading response header from upstream라고 뜨네요 3일동안 해봤는데 헛발짓만 했네용..gpt한테 물어봐도 메모리 리소스, 네트워크 문제 , 응답시간 문제 등 이라곤 하는데 메모리랑 네트워크에는 아무런 문제가 없는거 같습니다.3일전까지만 해도 잘되던 서버가 안되니까 많이 답답하네요..
-
미해결Vue.js - Django 연동 웹 프로그래밍 (실전편)
axios url 질문이 있습니다
안녕하세요 강사님, 현재 태그를 누르면 포스트 목록 페이지 이동까지 구현을 성공한 상태입니다. (섹션 11에 올려주신 메인메뉴 수정 참고해서요 !)섹션 11 영상이 아니라 앞서 설명해주실 때에는 장고서버에서 설명해주셨어서 (?) 약간 헷갈리는 부분이 있는데,제가 이해하고 있는 게 맞는지 여쭤보고싶어서 질문 드립니다 !!postdetail.vue 에 내용에 의해serverPage(tagname) { console.log("serverPage()...", tagname); location.href = `/my_blog.html?tagname=${tagname}`; }이렇게 태그를 누르면 `/my_blog.html?tagname=${tagname}`; 로 이동하게 해놨는데, (저는 ~/my_blog 에 postlist 컴포넌트를 위치시켜놔서 url 이 저렇습니다 !)이러면 postlist.vue 에서 저 url 을 파싱해서created () { const params = new URL(location).searchParams; // const paramTag = params.get('tagname'); this.tagname = params.get("tagname") this.fetchPostList() },tagname 을 추출하는 것까지는 이해 했습니다 !그 후에 fetchPostList() { console.log("fetchPostList()...", this.tagname); // 메서드 이름을 콘솔에 로깅하여 메서드가 호출되는 것 확인 let getUrl = ''; if (this.tagname) getUrl = `/api/post/list/?tagname=${this.tagname}`; else getUrl = '/api/post/list/'; axios.get(getUrl) // axios를 사용하여 /api/post/list/로 HTTP GET 요청 보내기 .then(res => { // 성공적인 응답의 경우 then 부분 실행 // 서버로부터 받은 응답 데이터 는 res 매개변수 안에 console.log("POST LIST GET RES", res); // 서버 응답을 콘솔에 로깅 this.posts = res.data; // res.data 에 서버에서 받은 데이터가 있을 것 // 이 데이터를 Vue 컴포넌트의 this.posts 데이터 속성에 할당 axios 를 통해 해당 태그에 맞는 데이터를 가져오는 것으로 이해 했습니다. 근데 여기서 getUrl = `/api/post/list/?tagname=${this.tagname}` 부분이 약간 이해가 안되어서요.urlpatterns = [ path('post/list/', views.ApiPostLV.as_view(), name='post_list'), path('post/<int:pk>/', views.ApiPostDV.as_view(), name="post_detail"), path('tag/cloud/', views.ApiTagCloudLV.as_view(), name='tag_cloud'), ]django 에서 api 에 관련된 url 은 이렇게 지정을 해두었는데, post list 에서 특정 포스트를 누르면 해당 포스트의 id를 추출해서 axios 를 통해 요청하는 url은 axios.get(`/api/post/${postId}/`) 이잖아요. 이부분은 위의path('post/<int:pk>/', views.ApiPostDV.as_view(), name="post_detail"), 에서 <int:pk> 에 id 가 들어가는 거로 이해가 됩니다.그런데 태그에 대한 목록 부분은, api/post/list 뒤의 부분은 정의(?)를 안해두었는데, 어떻게 오류없이 저 url 뒤의 태그를 알아서 인식하고 해당 태그에 대한 데이터를 보내주는 것인지 궁금합니다. 감사합니다 :)
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
리뉴얼 강의 질문, 건의
선생님 안녕하세요.좋은 강의해주시고 리뉴얼도 준비해주셔서 감사합니다. 무척 기대하는 마음으로 기다리고 있는데요. 리뉴얼 강의에 대해서 질문 및 요청 사항이 있어서 글 남깁니다. 다른 질문 글에서 리뉴얼 강의에서도 리액트를 다룰 예정이시라고 들었는데요. 리액트에서 18버전에서 업데이트 된 기능들, server component 같은 부분도 다루어지는지, Next를 다루실 계획도 있으신지 궁금합니다. 그리고 혹시 리뉴얼에서 테스팅도 다루실 계획이 있으신가요? 앱을 만들어볼수록 테스팅이 참 중요하다는 걸 느끼게 되는데요. 실습으로 만드는 프로젝트를 위한 테스팅 코드까지 다루어진다면 정말 실전에서 필요한 건 빠지는 게 없는 강의가 되지 않을까 하는 기대를 해봅니다. 감사합니다!
-
미해결작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지
프로필 update편 질문있습니다.
프로필 update편 진행 중에 이런 문제가 발생합니다.도와주세요 ㅜㅜ
-
미해결작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지
수업질문
버튼 만들어서 post로 보내려고 할 때 발생하는 에러가 달라요강사님 영상에서는 Forbidden에러가 발생하는데 제꺼는 runtime error at /account/hellow_world 에러가 발생합니다. 어디서 문제일까요?
-
미해결작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지
COOP error
61강 까지 들었고 IP주소 접근까지 되는데 이미지를 올릴때 COOP 오류가 뜹니다. Nginx.conf 에서 수정해야하나요?
-
미해결작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지
61강 Dockerfile error
안녕하세요 61강을 듣고 따라하던중 오류가 있어서 문의드립니다. Docker image를 만들때 FROM python:3.11.6 WORKDIR /home/ RUN echo "testing1234" RUN git clone https://github.com/akfldk1028/pragmatic.git WORKDIR /home/pragmatic/ RUN pip install -r requirements.txt RUN pip install gunicorn RUN pip install mysqlclient RUN echo "SECRET_KEY=django-insecure-s0ypvv7i_g2n6&sax1tgnv7egn_r=4!%j3xmynfv$=hj5b8(ws" > .env EXPOSE 8000 CMD ["bash", "-c", "python manage.py collectstatic --noinput --settings=pragmatic.settings.deploy && python manage.py migrate --settings=pragmatic.settings.deploy && gunicorn pragmatic.wsgi --env DJANGO_SETTINGS_MODULE=pragmatic.settings.deploy --bind 0.0.0.0:8000"] 위의 코드와 같이 그대로 따라 했는데 이전에는 구동이 됬었는데RUN echo "testing1234" ```이거를 위에 붙이니까 다음과 같이 오류가 뜨더군요..fatal: could not read Username for 'https://github.com': No such device or address The command '/bin/sh -c git clone https://github.com/akfldk1028/pragmatic.git' returned a non-zero code: 128오류가 이렇게 떠서 이리저리 어려움을 겪다가 나중에 github 저장소를 private 에서 public으로 바꾸어주니까 다시 진행되긴 했는데 의문점이 남아 질문드립니다. 혹시 나중에 프로젝트를 private로 바꾸고 진행하려면 Docker file에 GitHub 액세스토큰을 추가해야하는 건가요? 아니면 DockerContainer 내에서 SSH키를 사용해야하는건가요?
-
미해결작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지
static안에 base.css 에서 정의한 클래스가 적용되지 않습니다.
static안에 base.css 에서 정의한 클래스가 적용되지 않습니다.html 태그 내에서 직접 style로 정의할 때는 되는데 base.css로 옮기고 적용하려고 하면 적용이 안 돼요. 도와주세요 ㅜㅜ
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
강의 자료에 잘못 써져있는건 고쳐주시길 부탁드립니다.
이번에 듣고 있는데 CBV 설명하실 때context = self.get_queryset()를 잘 못 적으셨다고 합니다.이 부분은 강의를 듣는 사람에게 혼란을 야기할 수도 있다고 생각합니다. 그 이유는 설명에서는 get_context로 바꾸면 된다고는 하지만 그 다음 설명인 ListView의 내부를 살펴봤을 땐 'get_context_data', 'get_context_object_name'이 두가지의 함수가 존재합니다.그래서 어느 함수가 쓰여져있는지 강의를 듣는 사람 입장에서 혼란스러울 수 밖에 없는 입장이 될 수 있습니다.이 부분은 물론 강의 듣는 사람이 실습하면서 직접 알아볼 수 도 있지만 강의 하시는 분이시니 고쳐주셨으면 합니다. 오탈자 목록을 지원하지 않으시다면 수정해서 다시올려주시면 감사합니다.
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
drf + react 로 배포 고민이 있습니다
drf + react 로 배포 고민이 있는데요 혹시 참고할만한 강의 있을까요?그리고 portone 결제 강의 들었는데 drf 버젼으로 강의 만들어서 배포까지 가르치는 강의 계획은 없으신가요? 아니면 fastapi나 django ninja + react 강의는 계획 없으신가요?
-
미해결Vue.js - Django 연동 웹 프로그래밍 (실전편)
질문
안녕하세요 강사님, 강의 보면서 블로그를 만들어보고 있는데, 혹시 이렇게 백엔드와 프론트엔드 서버를 분리 해서 개발해도, 블로그 친구들이나 팔로워 팔로잉 기능들은 django로 구현이 가능한걸까요?
-
미해결Vue.js - Django 연동 웹 프로그래밍 (실전편)
질문입니다 !!
안녕하세요 강사님, 저는 강사님 코드에서 조금씩 수정하여 서버를 띄워보았는데, PostDetail 보여주는 부분에서 계속 오류가 생겨서요,TypeError: Object of type User is not JSON serializable [21/Oct/2023 21:14:51] "GET /api/post/2/ HTTP/1.1" 500 120254이렇게 오류가 뜨는데 왜 이럴까요? ㅠㅠ이전/다음 포스팅 보여주기 전에 포스팅 하나의 상세페이지 띄워주는 것까지는 정상적으로 확인이 됐었습니다.api/views.py# Create your views here. class ApiPostLV(BaseListView): model = Post def get_queryset(self): queryset = super().get_queryset() return queryset.order_by('-create_dt') def render_to_response(self, context, **response_kwargs): qs = context['object_list'] postList = [obj_to_post(obj) for obj in qs] return JsonResponse(data=postList, safe=False, status=200) class ApiPostDV(BaseDetailView): model = Post def render_to_response(self, context, **response_kwargs): obj = context['object'] post = obj_to_post(obj) post['prev'], post['next'] = prev_next_post(obj) return JsonResponse(data=post, safe=True, status=200)api/views_util.pydef obj_to_post(obj): post = dict(vars(obj)) if obj.create_dt: post['create_dt'] = obj.create_dt.strftime('%Y-%m-%d %H:%M') else: post['create_dt'] = '' if obj.modify_dt: post['modify_dt'] = obj.modify_dt.strftime('%Y-%m-%d %H:%M') else: post['modify_dt'] = '' if obj.tags: post['tags'] = [tag.name for tag in obj.tags.all()] else: post['tags'] = [] if obj.owner: post['owner'] = obj.owner.username else: post['owner'] = 'Anonymous' del post['_state'] return post def prev_next_post(obj): try: prevObj = obj.get_prev() prevDict = {'id' : prevObj.id, 'title' : prevObj.title, 'description' : prevObj.description, 'create_dt' : prevObj.create_dt, 'owner' : prevObj.owner} except obj.DoesNotExist as e: prevDict = {} try: nextObj = obj.get_next() nextDict = {'id' : nextObj.id, 'title' : nextObj.title, 'description' : nextObj.description, 'create_dt' : nextObj.create_dt, 'owner' : nextObj.owner} except obj.DoesNotExist as e: nextDict = {} return prevDict, nextDict blog/models.pyclass Post(models.Model): title = models.CharField(verbose_name='TITLE', max_length=50) # verbose_name : 칼럼에 대한 별칭 description = models.CharField('DISCRIPTION', max_length=100, blank=True, help_text='simple description text.') content = models.TextField('CONTENT') create_dt = models.DateTimeField('CREATE DATE', auto_now_add=True) modify_dt = models.DateTimeField('MODIFY DATE', auto_now=True) tags = TaggableManager(blank=True) owner = models.ForeignKey(get_user_model(), on_delete=models.CASCADE, verbose_name='OWNER', blank=True, null=True) def __str__(self): return self.title def get_absolute_url(self): return reverse('blog:post_detail', args=(self.id,)) def get_prev(self): return self.get_previous_by_create_dt() def get_next(self): return self.get_next_by_create_dt() PostDetail.vue<template> <v-container class="white"> <v-row align="center" justify="center"> <!-- align 속성은 위아래, justify 속성은 좌우 위치 조정 --> <v-col cols="12" lg="10"> <!-- <v-card class="pa-2" outlined tile> --> <h1>{{ post.title }}</h1> <div> <h3>{{ post.description }}</h3> </div> <div> <p style="margin: 5px 0;">작성일자 : {{ post.create_dt }} 최종수정 : {{ post.modify_dt }}</p> <p style="margin: 5px 0;">written by {{ post.owner }}</p> </div> <v-divider></v-divider> <!-- </v-card> --> </v-col> </v-row> <v-row align="start" justify="center"> <v-col cols="12" lg="10"> <!-- <v-card class="pa-2" outlined tile> --> <p style="white-space: pre-wrap;"> {{ post.content }}</p> <div> <strong>TAGS:</strong> <v-chip class="ma-2" outlined v-for="(tag, index) in post.tags" :key="index">{{ tag }}</v-chip> </div> <v-divider></v-divider> <!-- </v-card> --> </v-col> </v-row> <v-row align="center" justify="center"> <v-col cols="12" lg="10"> <v-card class="pa-2" outlined tile> <v-row> <!-- 왼쪽에 다음 글 문구 배치 --> <v-col align="center" cols="2"> <p>이전 글</p> </v-col> <!-- 오른쪽에 다음 글 제목 문구 배치 --> <v-col cols="10"> <div> <h3 v-if="post.prev" @click="fetchPostDetail(post.prev.id)">{{ post.prev.title }}</h3> <p v-if="post.prev" @click="fetchPostDetail(post.prev.id)">{{ post.prev.description }}</p> </div> </v-col> </v-row> </v-card> <v-card class="pa-2" outlined tile> <v-row> <!-- 왼쪽에 다음 글 문구 배치 --> <v-col align="center" cols="2"> <p>다음 글</p> </v-col> <!-- 오른쪽에 다음 글 제목 문구 배치 --> <v-col cols="10"> <div> <h3 v-if="post.next" @click="fetchPostDetail(post.next.id)">{{ post.next.title }}</h3> <p v-if="post.next" @click="fetchPostDetail(post.next.id)">{{ post.next.description }}</p> </div> </v-col> </v-row> </v-card> </v-col> </v-row> </v-container> </template> <script> import axios from "axios"; export default { name: "PostDeatail", data: () => ({ post: {}, }), created() { console.log("created()..."); const postId = 2; this.fetchPostDetail(postId); }, methods: { fetchPostDetail(postId) { console.log("fetchPostDetail()...", postId); axios.get(`/api/post/${postId}/`) .then(res =>{ console.log("POST DETAIL GET RES", res); this.post = res.data; }) .catch(err => { console.log("POST DETAIL GET ERR_RESPONSE", err.response); alert(err.response.status + ' ' + err.response.statusText); }); } } } </script> <style scoped> </style> 계속 다시 코드를 짜보았는데도 어디서 오류가 나는 것인지 모르겠어서요 ㅠㅠ.....감사합니다 .. ㅜㅜ
-
미해결Vue.js - Django 연동 웹 프로그래밍 (실전편)
Post model
modify_dt 가 아니라 아래처럼 create_dt 를 기준으로 이전 이후 나누게 코드 짜도 되나요? def get_prev(self): return self.get_previous_by_create_dt() def get_next(self): return self.get_next_by_create_dt()
-
미해결Vue.js - Django 연동 웹 프로그래밍 (실전편)
taggit
안녕하세요 강사님, Post model 구현하는 과정에서from taggit.managers 이 부분이 저는 계속 밑줄이 뜨는데 왜 이러는 걸까요? ㅠㅠ