월 26,400원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결Do It! 장고+부트스트랩: 파이썬 웹개발의 정석
검색버튼 작동이 안돼요
검색어를 입력하고 go버튼을 눌러도 작동하지 않고Uncaught ReferenceError: searchPost is not defined at HTMLButtonElement.onclick 라고 메시지가 뜹니다.
- 미해결Do It! 장고+부트스트랩: 파이썬 웹개발의 정석
crispy적용오류
아래랑 똑같은 상황인데 어떻게 해야하나요?https://www.inflearn.com/questions/802016/django-crispy-%EC%A0%81%EC%9A%A9-%EC%98%A4%EB%A5%98
- 미해결Do It! 장고+부트스트랩: 파이썬 웹개발의 정석
admin페이지에서 로그인이 안됩니다
예전에 로그인 됐었는데 로그아웃하고 다시 하려고 했더니 로그인이 안됩니다..
- 미해결Do It! 장고+부트스트랩: 파이썬 웹개발의 정석
포스트 목록 페이지 수정하기2 중에서 막히는 부분이 있습니다. (미분류)
안녕하세요 선생님. 강의 열심히 듣고 있습니다^^;다름이 아니라 아래와 같이 미분류 카운트가 입력되지 않아 오류가 발생하는 부분때문에 계속 찾아보았으나,답답한 마음에 질문글을 남깁니다.우선 카테고리 분류에서프로그래밍, 문화&예술 까진 카운트가 잘 입력됩니다.그렇지만 "미분류" 부분은 계속 () 으로 표시됩니다.분명 미분류 부분이 존재함에도 불구하고, 카운트가 되지 않는 건 무엇이 잘못되었는지 도저히 알기가 어렵습니다. 혹시 확인이 가능할까요?^^;; test.py 실행시 오류화면미분류() 카운트 부분을 주석처리하면 테스트는 잘 완료됩니다.총 4개의 페이지에 대한 코드를 올려봅니다.test.pybase.htmlviews.pypost_list.html test.pyfrom django.test import TestCase, Client from django.contrib.auth.models import User from bs4 import BeautifulSoup from .models import Post, Category # Create your tests here. class TestView(TestCase): def setUp(self): self.client = Client() # 방문하는 사람의 브라우저다 Client() self.user_trump = User.objects.create_user( username='trump', password='somepassword' ) self.user_obama = User.objects.create_user( username='obama', password='somepassword' ) self.category_programming = Category.objects.create( name='programming', slug='programming' ) self.category_music = Category.objects.create( name='music', slug='music' ) self.post_001 = Post.objects.create( title='첫 번째 포스트입니다.', content='Hello, world, we are the world', category=self.category_programming, author=self.user_trump, ) self.post_002 = Post.objects.create( title='두 번째 포스트입니다.', content='1등이 전부는 아니잖아요. 저는 개발을 좋아할겁니다.', category=self.category_music, author=self.user_obama, ) self.post_003 = Post.objects.create( title='세 번째 포스트입니다.', content='Category 가 없을 수도 있죠.', author=self.user_obama, ) def navbar_test(self, soup): navbar = soup.nav self.assertIn('Blog', navbar.text) self.assertIn('about_me', navbar.text) logo_btn = navbar.find('a', text='Do it Django') self.assertEqual(logo_btn.attrs['href'], '/') home_btn = navbar.find('a', text='Home') self.assertEqual(home_btn.attrs['href'], '/') blog_btn = navbar.find('a', text='Blog') self.assertEqual(blog_btn.attrs['href'], '/blog/') about_me_btn = navbar.find('a', text='about_me') self.assertEqual(about_me_btn.attrs['href'], '/about_me/') def category_card_test(self, soup): categories_card = soup.find('div', id='categories-card') self.assertIn('Categories', categories_card.text) self.assertIn( f'{self.category_programming} ({self.category_programming.post_set.count()})', categories_card.text ) self.assertIn( f'{self.category_music} ({self.category_music.post_set.count()})', categories_card.text ) self.assertIn( f'미분류 ({Post.objects.filter(category=None).count()})', categories_card.text ) def test_post_list_with_posts(self): self.assertEqual(Post.objects.count(), 3) # 1.1 포스트 목록 페이지 (post_list)를 연다. response = self.client.get('/blog/') # 1.2 정상적으로 페이지가 로드된다. self.assertEqual(response.status_code, 200) # 1.3 페이지 타이틀에 Blog 라는 문구가 있다. soup = BeautifulSoup(response.content, 'html.parser') self.assertIn('Blog', soup.title.text) self.navbar_test(soup) self.category_card_test(soup) # 3-2. 포스트 목록 페이지를 새로 고침 했을 때, response = self.client.get('/blog/') soup = BeautifulSoup(response.content, 'html.parser') # 3-3. 메인영역에 포스트 2개의 타이틀이 존재한다. main_area = soup.find('div', id='main-area') self.assertNotIn('아직 게시물이 없습니다.', main_area.text) post_001_card = main_area.find('div', id='post-1') self.assertIn(self.post_001.title, post_001_card.text) self.assertIn(self.post_001.category.name, post_001_card.text) post_002_card = main_area.find('div', id='post-2') self.assertIn(self.post_002.title, post_002_card.text) self.assertIn(self.post_002.category.name, post_002_card.text) post_003_card = main_area.find('div', id='post-3') self.assertIn(self.post_003.title, post_003_card.text) self.assertIn('미분류', post_003_card.text) self.assertIn(self.post_001.author.username.upper(), main_area.text) self.assertIn(self.post_002.author.username.upper(), main_area.text) self.assertIn(self.post_003.author.username.upper(), main_area.text) def test_post_list_without_post(self): Post.objects.all().delete() self.assertEqual(Post.objects.count(), 0) response = self.client.get('/blog/') self.assertEqual(response.status_code, 200) soup = BeautifulSoup(response.content, 'html.parser') self.navbar_test(soup) self.assertIn('Blog', soup.title.text) # 2-2. 메인영역에 "아직 게시물이 없습니다." 라는 문구가 나온다. main_area = soup.find('div', id='main-area') self.assertIn('아직 게시물이 없습니다.', main_area.text) def test_post_detail(self): self.assertEqual(Post.objects.count(), 3) # 1.2 그 포스트의 url은 '/blog/1/' 이다. self.assertEqual(self.post_001.get_absolute_url(), '/blog/1/') #.2. 첫 번째 포스트의 상세 페이지 테스트 # 2-1. 첫 번째 포스트의 url로 접근하면 정상적으로 작동한다. (status code : 200). response = self.client.get(self.post_001.get_absolute_url()) self.assertEqual(response.status_code, 200) soup = BeautifulSoup(response.content, 'html.parser') # # 2-2. 포스트 목록 페이지와 똑같은 네비게이션 바가 있다. self.navbar_test(soup) # 2-3. 첫 번째 포스트의 제목이 웹 브라우저 탭 타이틀에 들어있다. self.assertIn(self.post_001.title, soup.title.text) # 2-4. 첫 번째 포스트의 제목이 포스트 영역에 있다. main_area = soup.find('div', id='main-area') post_area = main_area.find('div', id='post-area') self.assertIn(self.post_001.title, post_area.text) # # 2-5. 첫 번째 포스트의 작성자(author)가 포스트 영역에 있다. (아직 구현할 수 없음) self.assertIn(self.user_trump.username.upper(), post_area.text) # # 2-6. 첫 번째 포스트의 내용(content)이 포스트 영역에 있다. self.assertIn(self.post_001.content, post_area.text) base.html<!DOCTYPE html> {% load static %} <html> <head> <title>{% block head_title %} Blog | 하도영 웹사이트 {% endblock %}</title> <link href="{% static 'blog/bootstrap/bootstrap.min.css' %}" rel="stylesheet" type="text/css"> <!-- <link href="./practice.css" rel="stylesheet" type="text/css"> --> <!-- 주석처리 키 ctrl + / --> <script src="https://kit.fontawesome.com/c1d4d1ab30.js" crossorigin="anonymous"></script> </head> <body> {% include 'blog/navbar.html' %} <div class="container"> <!-- 블로그 리스트 페이지 만들기 강의 5:04 blog 글자 부분 container 클래스에 의해 do it django 와 같은 간격으로 맞춰짐 --> <!-- 이 아래는 9:3, 좁을때는 8:4 로 나눌거임 --> <div class="row my-3"> <div class="col-md-8 col-lg-9", id="main-area"> {% block main_area %} {% endblock %} </div> <div class="col-md-4 col-lg-3"> <!-- Search widget--> <div class="card mb-4"> <div class="card-header">Search</div> <div class="card-body"> <div class="input-group"> <input class="form-control" type="text" placeholder="Enter search term..." aria-label="Enter search term..." aria-describedby="button-search" /> <button class="btn btn-primary" id="button-search" type="button">Go!</button> </div> </div> <!-- Categories widget--> <div class="card mb-4", id="categories-card"> <div class="card-header">Categories</div> <div class="card-body"> <div class="row"> <ul> {% for category in categories %} <li> <a href="#!">{{ category.name }} ({{ category.post_set.count }})</a> </li> {% endfor %} <!-- views.py 에 def get_context_data(self, **kwargs): 를 참고한다. --> <li> <a href="#!">미분류 ({{ no_category_post.count }})</a> </li> </ul> </div> </div> </div> </div> </div> </div> {% include 'blog/footer.html' %} <script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-Fy6S3B9q64WdZWQUiU+q4/2Lc9npb8tCaSX9FK7E8HnRr0Jz8D6OP9dO5Vg3Q9ct" crossorigin="anonymous"></script> </body> </html> views.pyfrom django.shortcuts import render from django.views.generic import ListView, DetailView from .models import Post, Category class PostList(ListView): model = Post # template_name = 'blog/post_list.html' ordering = '-pk' def get_context_data(self, **kwargs): context = super(PostList, self).get_context_data() context['categories'] = Category.objects.all() context['no_category_post.count'] = Post.objects.filter(category=None).count() # 미분류인 애들이 몇개인지 확인한다. filter기능을 이용해 none 인 애를 확인하고 count() 에 숫자를 담아 no_category_post.count에 넣어준다. return context class PostDetail(DetailView): model = Post template_name = 'blog/post_detail.html' # def index(request): # posts = Post.objects.all().order_by('-pk') # # pk는 순서대로 -pk 는 역순으로 최신 쓰레드가 위로 나오도록 조회 # return render( # request, # 'blog/index.html', # { # 'posts': posts, # } # ) # def single_post_page(request, pk): # post = Post.objects.get(pk=pk) # # return render( # request, # 'blog/single_page.html', # { # 'post': post, # } # ) post_list.html{% extends 'blog/base.html' %} {% block main_area %} <h1> Blog </h1> {% if post_list.exists %} {% for p in post_list %} <!-- Blog Post --> <div class="card mb-4", id="post-{{ p.id }}"> {% if p.head_image %} <img class="card-img-top" src="{{ p.head_image.url}}" alt="{{ p.title }}" /> {% else %} <img class="card-img-top" src="https://picsum.photos/seed/{{ p.id }}/600/200" alt="{{ p.title }}" /> {% endif %} <div class="card-body"> <!-- <div class="small text-muted">January 1, 2022</div>--> {% if p.category %} <span class="badge badge-secondary float-right">{{ p.category }} </span> {% else %} <span class="badge badge-secondary float-right">미분류</span> {% endif %} <h2 class="card-title h4">{{ p.title }}</h2> {% if p.hook_text %} <h5 class="text-muted">{{ p.hook_text }}</h5> {% endif %} <p class="card-text">{{ p.content | truncatewords:45 }}</p> <a href="{{ p.get_absolute_url }}" class="btn btn-primary">Read more →</a> </div> <div class="card-footer text-muted"> Posted on {{ p.created_at }} by <a href="#">{{ p.author | upper }}</a> </div> </div> {% endfor %} {% else %} <h1> 아직 게시물이 없습니다. </h1> {% endif %} <!-- Pagination--> <ul class="pagination justify-content-center my-4"> <li class="page-item"> <a class="page-link" href="#!">← Older</a> </li> <li class="page-item disabled"> <a class="page-link" href="#!">Newer →</a> </li> </ul> {% endblock %}
- 미해결Do It! 장고+부트스트랩: 파이썬 웹개발의 정석
https ssl 인증 시 에러가 발생합니다.
안녕하세요? 강사님지난 번 에러는 여차저차 해결을 하였는데 https로 인증을 받고자 할 경우 에러가 발생하고 있습니다.먼저 init-letsencrypt.sh 실행 시 아래와 같이 발생합니다.docker-compose logs 시에는 아래와 같은 에러가 발생합니다. 먼저, Route 53에서 도메인을 구입하여 http와 www.도메인 으로 정상 접속되는 것을 확인하였습니다.이후 https 인증을 받고자 .env.prod, .env.prod.db, docker-compose.yml, nginx.conf 등을 강사님 깃허브를 참고하여 복붙하거나 타이핑하였고, init-letsencrypt.sh 파일은 강의에서 말씀해주신대로 도메인 링크와 개인 이메일만 기입하여 저장하였는데 위와 같이 에러가 발생하네요.관련 파일들 코드 첨부드립니다.NGINX.conf 파일입니다.docker-compose.yml 파일입니다.참고로 깃허브 주소는 https://github.com/KDH1119/do_it_django_inflearn_2022 입니다.
- 미해결Do It! 장고+부트스트랩: 파이썬 웹개발의 정석
AWS 인스턴스를 통해 서비스 적용 시 에러가 발생합니다
안녕하세요? 강사님유익한 강의 잘 듣고 있습니다.현재 진행 중인 부분은 '도커로 서비스 시작하기'이며 운영체제는 맥os입니다.가상환경을 적용하여 개발 진행하였으며 docker로 백그라운드에서 서버 여는 것까지는 완벽하게 잘 진행되었는데 .env.prod, .env.prod.db 등의 파일을 생성하면서부터 문제가 발생하여 질문드립니다..gitignore 파일 하단에 .env.prod, .env.prod.db를 추가하였으나 git commit 적용 시 두 파일이 업데이트 됩니다. .gitignore 파일 스크린샷 첨부드립니다.위 단계는 우선 넘어가고 진도에 맞게 진행하였는데 AWS 인스턴스 생성 후, 강의에서 진행하신대로https://doitdjango.com/blog/4/ (cryptography 오류시 대처법) 게시글의 코드를 입력하였는데docker-compose build시 아래 오류가 발생하였습니다.WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment insteadhttps://stackoverflow.com/questions/68673221/warning-running-pip-as-the-root-user스택오버플로우에 해당 사례가 있어, 제 Dockerfile에 아래 코드를 추가하였습니다.ENV PIP_ROOT_USER_ACTION=ignore추가 후 git commit, push, AWS 인스턴스에서 git clone을 다시 적용하여 build 수행하였는데도 위 오류가 다시 발생하였습니다.GitHub 링크 공유드립니다.https://github.com/KDH1119/do_it_django_inflearn_2022
- 미해결Do It! 장고+부트스트랩: 파이썬 웹개발의 정석
모델만들기 교육중 컬럼.. created_at 오류관련문의
안녕하세요 선생님. 모델만들기 강좌 수강 중입니다. django 서버를 실행하여 blog 앱 내 post 내 첫번째 포스트를 작성하고 있으나, 결과값이 계속 created_at 컬럼이 없다고 나오는 문제가 있습니다. create_at 부분은 주석처리하면 동작이 잘되고 있습니다. 혹시 어떻게 처리가 가능한지 문의드립니다 ㅜㅜ몇번이고 동영상을 따라해보았으나, 진행이되지 않고있습니다. class Post(models.Model): title = models.CharField(max_length=50) content = models.TextField() # created_at = models.DateTimeField() # author: 추후 작성 예정
- 미해결Do It! 장고+부트스트랩: 파이썬 웹개발의 정석
소스 부탁드립니다. blog_list.html
선생님 안녕하세요너무 쉽게 잘 설명해주셔서 늘감사하며 공부하고 있습니다. 다른게 아니라, 영상 1분 38초 에 보면blog_list.hml을 복사해서붙여 넣으시는데부트스트랩 강좌를 보지 않아서 해당 소스가 없습니다 저와 같이 부트스트랩 강좌를 보지 않은 수강생을 위해서, 코드 소스 주시면 좋을것 같습니댜
- 미해결Do It! 장고+부트스트랩: 파이썬 웹개발의 정석
상대경로 문의 드려요
강의 영상 7분 40초 정도쯤에 <nav> <a href="/blog/">Blog</a> </nav>이렇게 a 태그에 상대경로를 적습니다. 상대경로라는게, 현재 소스코드 파일 위치를 기준으로 상대경로를 정하는게 아닌가요? 어떻게 /blog/가 작동이 되는지너무 헥갈리네요 ㅠㅠ/blog/가 정상적으로 이동이 되려면현재 파일이 같은 위치에 현재 파일이 있어야지 되는거 아닌가요? 전혀 다른 위치에 있는데, 도무지 모르겠습니다 ㅠㅠ자세히 알려주시면 감사하겠습니다.
- 미해결Do It! 장고+부트스트랩: 파이썬 웹개발의 정석
쪽지 기능 문의 드립니다.
강의 구매하고 아직 학습하기 전입니다 저는 커뮤니티 웹사이트를 만들고 싶습니다 장고로 사이트를 만들면 장고 기본기능에 쪽지 기능이 있는기 궁금합니다.질문그대로 제가 쪽지기능을 구현하는게 아닌,장고 의 기본기능에 쪽지 기능이 있는지 혹은, 쪽지기능 모듈이 있는지 궁금해서 문의드립니다알려주시면 감사하겠습니다~
- 미해결Do It! 장고+부트스트랩: 파이썬 웹개발의 정석
업데이트시 태그에 공백이 들어가면 db쪽에 인서트되는 오류가 있습니다.
강의 부분에 제목과 같은 내용이 추가되거나코드에 공백이 입력될때 대처될수있는 방법이 같이 소개되면 좋을 것 같아요...해당 오류 못찾았는데 공백이 tag로 추가되면 문제가 발생해서 한참 고생했습니다...
- 미해결Do It! 장고+부트스트랩: 파이썬 웹개발의 정석
개발용 도커 분리하기 질문
선생님 안녕하세요좋은 강의 감사합니다. 책에서 개발용 도커 파일 분리하기 부분(586~)에서 계속 오류가 나는데 도움 요청드립니다.저는 서버에러가 아니라 bad request(400) 에러가 나고, docker-compose logs 를 치면 아래와 같은 화면이 나옵니다.혹시 무엇이 오류인지 말씀해주실 수 있으실까요?
- 미해결Do It! 장고+부트스트랩: 파이썬 웹개발의 정석
postgres 부분 오류
선생님 안녕하세요좋은 강의 감사합니다. 책 575페이지 postgres 부분에서 아래와 같은 오류가 발생합니다.image 상황도 같이 첨부합니다.어떤 오류가 있는 것인지 도움 부탁드립니다!
- 미해결Do It! 장고+부트스트랩: 파이썬 웹개발의 정석
카테고리와 태그 위젯 위치 오류
안녕하세요? 좋은 강의 감사합니다.책 17-1을 하고 있는 도중에 질문이 있습니다.같은 base.html을 사용하고 있는데, post_detail.html 의 위젯 위치가 옆이 아니라, 아래에 나타나는 오류가 생깁니다. post_list.html 에서는 위젯이 정상적으로 오른쪽에 잡히는데요.오류 화면을 아래와 같이 첨부합니다.아래는 base.html의 코드이고요<!DOCTYPE html> {% load static %} <html> <head> <title>{% block head_title %}Blog{% endblock %}</title> <link rel= "stylesheet" href="{% static 'blog/bootstrap/bootstrap.min.css' %}" media="screen"> <script src="https://kit.fontawesome.com/726bbd6862.js" crossorigin="anonymous"></script> </head> <body> {% include 'blog/navbar.html' %} <div class="container my-3"> <div class="row"> <div class="col-md-8 col-lg-9" id="main-area"> {% block main_area %} {% endblock %} </div> <div class="col-md-4 col-lg-3"> <!-- Search Widget --> <div class="card my-4"> <h5 class="card-header">Search</h5> <div class="card-body"> <div class="input-group"> <input type="text" class="form-control" placeholder="Search for..."> <span class="input-group-btn"> <button class="btn btn-secondary" type="button">Go!</button> </span> </div> </div> </div> <!-- Categories Widget --> <div class="card my-4" id ="categories-card"> <h5 class="card-header">Categories</h5> <div class="card-body"> <div class="row"> <ul> {% for category in categories %} <li> <a href="{{ category.get_absolute_url }}">{{ category }} ({{ category.post_set.count }})</a> </li> {% endfor %} <li> <a href="/blog/category/no_category/"> 미분류 ({{ no_category_post_count }})</a> </li> </ul> </div> </div> </div> </div> </div> </div> {% include 'blog/footer.html' %} <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js" integrity="sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN" crossorigin="anonymous"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js" integrity="sha384-B4gt1jrGC7Jh4AgTPSdUtOBvfO8shuf57BaghqFfPlYxofvL8/KUEfYiJOMMV+rV" crossorigin="anonymous"></script> </body> </html>아래는 post_detail.html의 코드 입니다.{% extends 'blog/base.html' %} {% block head_title %} {{ post.title }} - Blog {% endblock %} {% block main_area %} <div id = "post-area"> {% if post.category %} <span class="badge badge-secondary float-right">{{ post.category }}</span> {% else %} <span class="badge badge-secondary float-right"> 미분류 </span> {% endif %} <!-- Title --> <h1 class="mt-4">{{ post.title }}</h1> <h5 class="text-muted">{{ post.hook_text }}</h5> <!-- Author --> <p class="lead"> by <a href="#"> {{ post.author | upper }} </a> </p> <hr> {% if user.is_authenticated and user == post.author %} <a class="btn btn-info btn-sm float-right" href="/blog/update_post/{{ post.pk }}/" role="button"><i class="fas fa-pen"></i>Edit Post</a> {% endif %} <!-- Date/Time --> <p>{{ post.created_at }}</p> <hr> <!-- Preview Image --> {% if post.head_image %} <img class="img-fluid rounded" src="{{ post.head_image.url }}" alt="{{ post.title }} head image"> {% else %} <img class="img-fluid rounded" src="https://picsum.photos/seed/{{ post.id }}/800/200" alt="random_image"> {% endif %} <hr> <!-- Post Content --> <p class="lead">{{ post.get_content_markdown | safe }}</p> {% if post.tags.exists %} <i class="fas fa-tags"></i> {% for tag in post.tags.all %} <a href="{{ tag.get_absolute_url }}" class="badge badge-light">{{ tag }}</a> {% endfor %} <br/> <br/> {% endif %} {% if post.file_upload %} <a href="{{ post.file_upload.url }}" class="btn btn-outline-dark" role="button"> Download : {% if post.get_file_ext == 'csv' %} <i class="fa-regular fa-file-csv"></i> {% elif post.get_file_ext == 'xlsx' or 'xls' %} <i class="fa-regular fa-file-excel"></i> {% elif post.get_file_ext == 'docs' or 'doc' %} <i class="fa-regular fa-file-word"></i> {% else %} <i class="far fa-file"></i> {% endif %} {{ post.get_file_name }} </a> {% endif %} <hr> </div> <div id="comment-area"> <!-- Comments Form --> <div class="card my-4"> <h5 class="card-header">Leave a Comment:</h5> <div class="card-body"> <form> <div class="form-group"> <textarea class="form-control" rows="3"></textarea> </div> <button type="submit" class="btn btn-primary">Submit</button> </form> </div> </div> {% if post.comment_set.exists %} {% for comment in post.comment_set.iterator %} <!-- Single Comment --> <div class="media mb-4" id="comment-{{ comment.pk }}"> <img class="d-flex mr-3 rounded-circle" src="http://placehold.it/50x50" alt=""> <div class="media-body"> <h5 class="mt-0">{{ comment.author.username }} <small class="text-muted">{{ comment.created_at }}</small> </h5> <p>{{ comment.content | linebreaks }}</p> </div> {% endfor %} {% endif %} </div> <hr/> </div> {% endblock %}완성된 코드와 비교를 해봐도 다른점을 잘 모르겠는데 도움 부탁드립니다!
- 미해결Do It! 장고+부트스트랩: 파이썬 웹개발의 정석
구글 소셜 로그인 오류
안녕하세요?좋은 강의 감사합니다. 책에서 구글 소셜로그인 기능을 그대로 만들었는데, 구글로 로그인을 하면 아래와 같은 그림이 나옵니다.책에 있는 내용을 그대로 따라했는데(혹시 몰라서 한번더 해봤기 때문에 프로젝트 이름에 2가 붙어있습니다 ㅎㅎ) 혹시 어디서 오류가 발생하는것인지 가이드가 가능하실까요?
- 미해결Do It! 장고+부트스트랩: 파이썬 웹개발의 정석
Card & Footer 문제
안녕하세요! 강의 잘 듣고 있습니다.<div class="container"> <div class="row my-3"> <div class="col-md-8 col-lg-9"> <h1>Blog</h1> <!-- Blog Post --> <div class="card mb-4"> <img class="card-img-top" src="./images/dyinBeach.jpg" alt="Card image cap"> <div class="card-body"> <h2 class="card-title">Post Title</h2> <p class="card-text">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Reiciendis aliquid atque, nulla? Quos cum ex quis soluta, a laboriosam. Dicta expedita corporis animi vero voluptate voluptatibus possimus, veniam magni quis!</p> <a href="#" class="btn btn-primary">Read More →</a> </div> <div class="card-footer text-muted"> Posted on January 1, 2020 by <a href="#">Start Bootstrap</a> </div> </div> <div class="col-md-4 col-lg-3"> <!-- Search Widget --> <div class="card my-4"> <h5 class="card-header">Search</h5> <div class="card-body"> <div class="input-group"> <input type="text" class="form-control" placeholder="Search for..."> <span class="input-group-append"> <button class="btn btn-secondary" type="button">Go!</button> </span> </div> </div> </div> <!-- Categories Widget --> <div class="card my-4"> <h5 class="card-header">Categories</h5> <div class="card-body"> <div class="row"> <div class="col-lg-6"> <ul class="list-unstyled mb-0"> <li> <a href="#">Web Design</a> </li> <li> <a href="#">HTML</a> </li> <li> <a href="#">Freebies</a> </li> </ul> </div> <div class="col-lg-6"> <ul class="list-unstyled mb-0"> <li> <a href="#">JavaScript</a> </li> <li> <a href="#">CSS</a> </li> <li> <a href="#">Tutorials</a> </li> </ul> </div> </div> </div> </div> </div> </div> </div> <script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-Fy6S3B9q64WdZWQUiU+q4/2Lc9npb8tCaSX9FK7E8HnRr0Jz8D6OP9dO5Vg3Q9ct" crossorigin="anonymous"></script>Card & Footer 강의에서 Blog Post하고 Search 카드를 만드는 것을 따라하고 있는데요. 저같은 경우는 강의에서처럼 Blog Post 카드 옆에 Search카드가 배치되는게 아니라 밑에 나오게 됩니다. 어떻게 해결해야 할까요? 컨테이너 안에 제가 실수한 것이 있을까요?감사합니다.
- 미해결Do It! 장고+부트스트랩: 파이썬 웹개발의 정석
완성은 했지만 문제가 자유게시판이네요
자유게시판에 삭제 수정 댓글 쓰기 만드는게 어렵네요 자유게시판에도 게시판 수정 댓글 쓰기 강의 나오면 좋겠네요
- 미해결Do It! 장고+부트스트랩: 파이썬 웹개발의 정석
리액트와 연동 가능 여부
안녕하세요, 장고 강의를 듣다가 질문이 생겨 글 남깁니다.이 강의에서 배운 방식을 rest-api(django rest framework)을 이용해서 리액트와 연동시킬 수 있는지,연동시킬 수 있다면, 이 강의에서 배운 방식을 rest-api 형식으로 바꾸는 방법에 대해서도 괜찮으시다면 알려주실 수 있으신가요?
- 미해결Do It! 장고+부트스트랩: 파이썬 웹개발의 정석
아무리 해도 안됩니다
django allauth - 소셜 로그인 구현하기 강의 에서 문제가 많네요 django allauth - 소셜 로그인 구현하기 강의 에서이번에 이렇게 뜨네요 뭐가 잘못된건지 모르겠네요
- 미해결Do It! 장고+부트스트랩: 파이썬 웹개발의 정석
오류좀 봐주세요
CreateView - 폼(form)으로 포스트 작성 페이지 만들기 강의에서여기까지왔는데요 이런오류가 뜨네요 python manage.py runserverWatching for file changes with StatReloaderPerforming system checks...Exception in thread django-main-thread:Traceback (most recent call last): File "C:\Program Files\Python310\lib\threading.py", line 1016, in bootstrapinner self.run() File "C:\Program Files\Python310\lib\threading.py", line 953, in run self._target(*self._args, **self._kwargs) File "C:\github\do_it_django_inflearnb_2022\venv\lib\site-packages\django\utils\autoreload.py", line 64, in wrapper fn(*args, **kwargs) File "C:\github\do_it_django_inflearnb_2022\venv\lib\site-packages\django\core\management\commands\runserver.py", line 134, in inner_run self.check(display_num_errors=True) File "C:\github\do_it_django_inflearnb_2022\venv\lib\site-packages\django\core\management\base.py", line 475, in check all_issues = checks.run_checks( File "C:\github\do_it_django_inflearnb_2022\venv\lib\site-packages\django\core\checks\registry.py", line 88, in run_checks new_errors = check(app_configs=app_configs, databases=databases) File "C:\github\do_it_django_inflearnb_2022\venv\lib\site-packages\django\core\checks\urls.py", line 14, in check_url_config return check_resolver(resolver) File "C:\github\do_it_django_inflearnb_2022\venv\lib\site-packages\django\core\checks\urls.py", line 24, in check_resolver return check_method() File "C:\github\do_it_django_inflearnb_2022\venv\lib\site-packages\django\urls\resolvers.py", line 494, in check for pattern in self.url_patterns: File "C:\github\do_it_django_inflearnb_2022\venv\lib\site-packages\django\utils\functional.py", line 57, in get res = instance.__dict__[self.name] = self.func(instance) File "C:\github\do_it_django_inflearnb_2022\venv\lib\site-packages\django\urls\resolvers.py", line 715, in url_patterns patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module) File "C:\github\do_it_django_inflearnb_2022\venv\lib\site-packages\django\utils\functional.py", line 57, in get res = instance.__dict__[self.name] = self.func(instance) File "C:\github\do_it_django_inflearnb_2022\venv\lib\site-packages\django\urls\resolvers.py", line 708, in urlconf_module return import_module(self.urlconf_name) File "C:\Program Files\Python310\lib\importlib\__init__.py", line 126, in import_module return bootstrap.gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1050, in gcdimport File "<frozen importlib._bootstrap>", line 1027, in findand_load File "<frozen importlib._bootstrap>", line 1006, in findand_load_unlocked File "<frozen importlib._bootstrap>", line 688, in loadunlocked File "<frozen importlib._bootstrap_external>", line 883, in exec_module File "<frozen importlib._bootstrap>", line 241, in callwith_frames_removed File "C:\github\do_it_django_inflearnb_2022\do_it_django_prj\urls.py", line 23, in <module> path('blog/', include('blog.urls')), File "C:\github\do_it_django_inflearnb_2022\venv\lib\site-packages\django\urls\conf.py", line 38, in include urlconf_module = import_module(urlconf_module) File "C:\Program Files\Python310\lib\importlib\__init__.py", line 126, in import_module return bootstrap.gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1050, in gcdimport File "<frozen importlib._bootstrap>", line 1027, in findand_load File "<frozen importlib._bootstrap>", line 1006, in findand_load_unlocked File "<frozen importlib._bootstrap>", line 688, in loadunlocked File "<frozen importlib._bootstrap_external>", line 883, in exec_module File "<frozen importlib._bootstrap>", line 241, in callwith_frames_removed File "C:\github\do_it_django_inflearnb_2022\blog\urls.py", line 6, in <module> path('tag/<str:slug>/', views.tag_page),AttributeError: module 'blog.views' has no attribute 'tag_page'