월 15,400원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지
8:17초 질문드립니다.
hello_world_list = HelloWorld.objects.all() 을 지우셨는데.. return HttpResponseRedirec(생략) 이므로 지워도 영향은 안 받겟지만...hello_world.html 에 아직 {% if hello_world_list %} {% for hello_world in hello_world_list %} <h4> {{ hello_world.text }} </h4> {% endfor %}{% endif %} 이 있으므로 지우면 안되지 않나요...? 근데 지우고 실행해보니 또 잘 되더라구요. 근데 제가 생각으로는 Redirect돼서 hello_world.html이 실행되는데 hello_world_list가 없으면 html이 실행이 안되므로 {{ hello_world.text }}도 실행이 안될텐데.. 왜 되는 걸까요...?
- 미해결작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지
9분 56초 질문드립니다.
def form_valid(self, form): temp_profile = form.save(commit=False) temp_profile.user = self.request.user temp_profile.save() return super().form_valid(form) 이 부분 10번 돌려봐도 무슨 말인지 전혀 모르겠습니다... 들리는 대로 다 적어봤는데, 이렇게 말씀하셨는데 무슨 말인지 전혀 이해가 안 가서 그런데 좀... 쉽게 설명 부탁드려도 될까요? #커스텀마이징하려는 내용. 괄호안의 form은 forms.py에서 날라온 데이터이며 (self, form)의 form에 저장된다. #user라는 데이터가 아직 없다. temp_profile의 user라는 데이터를 self에서 request를 보는 당사자 유저로 정해준다. 그리고 나머지는 조상(부모클래스)의 원래 그거의 결과를 return해준다.
- 해결됨작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지
4:50초 경 html 질문 드립니다.
{% target_user.profile %} <!-- target_user의 profile이 존재하면, --><h2 style="font-family: 'NanumSquareB'"> {{ target_user.profile.nickname }}</h2>{% else %] 이 부분에서 profile이 여기 이건 어디서 설정해 준건가요? 2. 6:03초에 보면, detail/2에서 create profile과 change info 둘다 나와있는데, templates를 찾아보니, change Info는 update.html에, 그리고 방금 만든 create profile은 detail에 있는데 왜 같이 나오는 걸까요...?? (html창을 다르게 만들었는데 왜 다른곳에 만든 연결창이 detail/2에서 같이 나올까요 ㅜ?) 마지막으로... html { % %} 해당 정보는 뭐라고 검색하면 찾아볼 수 있을까요...? (혼자 공부가 필요할 거 같아서..) 이건 장고에서만 쓰이는 건가요...? 매번 이상한 질문 답변해주셔서 감사합니다ㅜ
- 미해결작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지
데코레이터 질문 있습니다.
이거 모든 코드들을 다 이해해야 하나요...? 그러기엔 내부 코드들도 모르고 와닿지 않는 부분이 너무 많아서요 ㅜㅜ.... 즉, @login_required가 if request.user.is_authenticated:와 else: return 이하 생략 을 대신해서 사용하게 해준다는 건가요?
- 미해결작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지
6:30초 쯤 def get함수 질문..
def get함수가 뭘 의미하는 지 잘 모르겠어요.. def get(self, *args, **kwargs): if self.requset.user.is_authenticated: return super().get(*args, **kwargs) else: return HttpResponseRedirect(reverse('accountapp:login')) if라면 즉 로그인이 되었다면 기존의 방식대로 하고 아니면(else)라면, 다시 account/hello_world로 보내는 것 까진 알겠는데... 무엇을 기존의 방식대로 한다는 건지 모르겠습니다.. (def post 도 똑같이 하셨는데 왜 하는지, 무엇을 위해 하는지 어떻게 작동하는지 모르겠습니다..ㅜㅜ..전에는 와 닿았는데 이번엔 와 닿지 않는 느낌이예요.... )
- 미해결작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지
공지사항같은 관리자만 작성하는 글을쓰게 하기위해선 USER모델을 커스텀해야하나요?
안녕하세요 좋은 강의 감사합니다 여쭤볼게 있어서 질문드립니다! BaseUserManager, AbstractBaseUser 로 user모델을 커스텀해서 superuser인지 아닌지 데코레이터로 만들어야하나요 아니면 더 간단한 방법이 있을까요?
- 미해결작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지
로그인 2번해야 hello_world로 들어가지는문제
안녕하세요 저는 지금까지수업을 잘 따라하고있는데요..ㅎㅎ 근데 로그인을 1회했을때는 그대로 로그인창에 머물러있고 로그인을 2회째 해야 헬로월드 페이지로 넘어가는데 뭐가 잘못된걸까요?ㅎ
- 미해결작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지
SignUp후 다음과 같은 오류 메세지가 뜹니다 Reverse for 'hello_world' not found. 'hello_world' is not a valid view function or pattern name.
강의는 대략 도커파일 작성 쯤입니다만, hello_world를 삭제한 강의 이후쯤부터 잘못된것 같습니다. SignUp에서 id와 pw를 입력하면, Reverse for 'hello_world' not found. 'hello_world' is not a valid view function or pattern name. 라는 오류 메세지가 뜨네요. url 패턴을 정의할 때, pattern name을 지정하지 않아서, url reverse 시에 해당 패턴을 찾지못한다는 오류로 알고있습니다. 어디가 틀렸을까요? 그 hello world 함수를 강좌대로 삭제한게 맞았고, 같은 코드를 작성했다고 믿었는데 저는 오류메세지가 뜨네요 ㅜㅜ 해결을 위해 커뮤니티에 'reverse'라는 키워드로 질문 검색해봤는데, 같은 오류지만 원인이 다른 것 같습니다. https://github.com/synodical/pinterest_django 제 깃헙주소입니다 Environment:Request Method: POSTRequest URL: http://127.0.0.1:8000/accounts/create/Django Version: 3.2.5Python Version: 3.8.2Installed Applications:['django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'bootstrap4', 'accountapp', 'profileapp', 'articleapp', 'commentapp', 'projectapp', 'subscribeapp']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 "/Users/LeeYeEun/venv/lib/python3.8/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/Users/LeeYeEun/venv/lib/python3.8/site-packages/django/core/handlers/base.py", line 181, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/Users/LeeYeEun/venv/lib/python3.8/site-packages/django/views/generic/base.py", line 70, in view return self.dispatch(request, *args, **kwargs) File "/Users/LeeYeEun/venv/lib/python3.8/site-packages/django/views/generic/base.py", line 98, in dispatch return handler(request, *args, **kwargs) File "/Users/LeeYeEun/venv/lib/python3.8/site-packages/django/views/generic/edit.py", line 172, in post return super().post(request, *args, **kwargs) File "/Users/LeeYeEun/venv/lib/python3.8/site-packages/django/views/generic/edit.py", line 142, in post return self.form_valid(form) File "/Users/LeeYeEun/venv/lib/python3.8/site-packages/django/views/generic/edit.py", line 126, in form_valid return super().form_valid(form) File "/Users/LeeYeEun/venv/lib/python3.8/site-packages/django/views/generic/edit.py", line 57, in form_valid return HttpResponseRedirect(self.get_success_url()) File "/Users/LeeYeEun/venv/lib/python3.8/site-packages/django/views/generic/edit.py", line 112, in get_success_url if self.success_url: File "/Users/LeeYeEun/venv/lib/python3.8/site-packages/django/utils/functional.py", line 135, in __wrapper__ res = func(*self.__args, **self.__kw) File "/Users/LeeYeEun/venv/lib/python3.8/site-packages/django/urls/base.py", line 86, in reverse return resolver._reverse_with_prefix(view, prefix, *args, **kwargs) File "/Users/LeeYeEun/venv/lib/python3.8/site-packages/django/urls/resolvers.py", line 694, in _reverse_with_prefix raise NoReverseMatch(msg)Exception Type: NoReverseMatch at /accounts/create/Exception Value: Reverse for 'hello_world' not found. 'hello_world' is not a valid view function or pattern name.
- 미해결작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지
33강 self.object 질문
self에 관련해서 질문 드립니다. 해당 강의에서 self.object.user.pk를 통해 pk값을 가져오고 이를 detail 페이지에 pk값으로 넘겨줍니다. 이전 강의에선 pk값을 넘겨주는 일이 있을 경우 self.request.user.pk 를 통해 pk값을 넘겨주었습니다. 왜 여기선 self.request 방식이 아닌 self.object를 통해 user pk값을 넘겨주나요?
- 미해결작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지
def get 관련 질문드립니다.
def get(): 에서 get은 그냥 이름을 지정해준 임의의 함수 아닌가요...? def mat(), def qeq()과 마찬가지로요.. 그리고 def get(self, *args, **kwargs): return super.().get(*args, **kwargs) 의 의미를 여쭤봐도 될까요...?? get함수가 다수의 튜플과 딕셔러리 형태를 매개변수로 받는다는 건 알겠는데 super.get()은 무슨말인지 잘 모르겠어요..ㅜㅜ..얕은 지식이라..
- 미해결작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지
정보 변경시 아이디가 계속 바뀌는 걸로 설정이 돼요...
forms.py는 깃헙에 올리신 것 복붙했는데 음..뭐가 문제일까요..ㅜㅜ? 이전도 똑같이 해서 에러나 문제는 지금까지는 없었습니다. 근데 회원정보 수정시 확인해보니 아래 코드를 쳤는데도 여전히 아이디를 바꿀수 있더라구요... 일단 Quit까지 만들어서 탈퇴까지는 되는 상태입니다. from django.contrib.auth.forms import UserCreationFormclass AccountUpdateForm(UserCreationForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.fields['username'].disabled = True
- 미해결작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지
NoneType 에러..
아이디 비활성화 전까지는 체인지인포가 잘 되었지만 비활성화 후에는 체인지인포 페이지에 들어가면 TypeError: 'NoneType' object is not callable 라며 들어가질 못합니다... 검색을 해보니 None이 발생할 경우도 설정해줘야한다는데 애초에 발생할 상황 자체가 아닌 것 같아 이상하여 질문 드립니다
- 미해결작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지
8:30초 질문있습니다~
어떻게 한번에 불러오신 건지 궁금해요~ 그리고 복붙한 4가지 파일들은, NanumSquareB.otf NanumSquareEB.otf NanumSquareR.otf NanumSquareL.otf 이렇게 4개인데, style안에는 @font-face{ font-family: 'NanumSquareR'; src: local('NanumSquareR'), url("{% static 'fonts/NanumSquareR.ttf' %}") format("opentype");}@font-face{ font-family: 'NanumSquareEB'; src: local('NanumSquareEB'), url("{% static 'fonts/NanumSquareEB.otf' %}") format("opentype");}@font-face{ font-family: 'NanumSquareB'; src: local('NanumSquareB'), url("{% static 'fonts/NanumSquareB.otf' %}") format("opentype");}@font-face{ font-family: 'NanumSquareR'; src: local('NanumSquareR'), url("{% static 'fonts/NanumSquareR.otf' %}") format("opentype");} 이렇게 입력하셨더라구요. 다 같아야 하는 거 아닌가요...? otf ttf 도 다르고 파일명도 다른데 있는데 왜 그런지 모르겠습니다. 매번감사합니다.
- 해결됨작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지
502 Bad Gateway
안녕하세요. 우선 저는 마지막 강의까지 수강을 완료했구요, 제 깃허브는 입니다. (처음에 프로젝트명을 잘못 설정해서 pragmatic이 아닌 pargmatic으로 진행했습니다.) 혹시 참고가 될까해서 몇개 소스는 복사하여 같이 올려봅니다. portainer - Service에서 DJ_django_container_gunicorn이 연결되지 않습니다. django_test_image:5 로 잘 생성도 되어있고, password도 제대로 되어 있는데.. 연결이 안됩니다.
- 미해결작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지
502 Bad gateway 오류...
django 컨테이너 오류 로그입니다 deploy.py 에 HOST는 mariadb로 되어있고요 namedvolume DB컨테이너이름도 똑같이 mariadb로 했습니다 그리고 nginx 오류로그입니다 대체 뭐가문제일까요... deploy.py 에서 maria_db로 돼있던거 mariadb로 고치고 push하고 컨테이너만들었는데 이것때문에 오류가나는건가요? 만약그렇다면 다시 HOST를 maria_ab로 바꾸고 컨테이너를 만들어야하나요??
- 미해결작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지
기능들은 어디서 찾아볼 수 있나요...?
class AccountCreateView(CreateView): model = User form_class = UserCreationForm success_url = reverse이런 기능들의 쓰임새를 척척 아시는 게 신기해서요...이건 정해져 있는 거 같은데 좀더 알아보려면장고 공식홈페이지를 참고하면 될까요?그리고 AccountCreateView.as_view() 의 뜻을 잘 이해를 못하겠는데AccountCreateView클래스에서 as_view()함수를 사용하겠다..이 뜻인가요?
- 미해결작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지
reverser('accountapp:hello_world2')에서 reverse함수
제가 알기로 reverse함수는 list타입에서 제공하는 함수라고 알고 있는데... 왜 HttpResponseRedirect(reverse('')) 에서 reverse함수를 써야 앱내부의 ''안에 접속할 수 있는건가요...?
- 미해결작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지
html에서 { % %}이거에 관해 여쭙고 싶어요.
html부분에서 딱히 저건 설명을 안 해주신 거 같더라구요.. 찾아보니 장고에서만 쓴다고 하는 거 같기도 하고;; 어떨 때 쓰는 건가요?? 그리고{% if {% for {% endif {%endfor 이런건 다 몬가요...?? 파이썬 문법이랑 비슷한 거 같기도 한데 html에 쓰이니 혼동이 오네요
- 미해결작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지
중요한 질문은 아니긴 한데.. POST 버튼에 색이 안 들어가요...
선생님 강의를 보면 POST버튼에 색이 들어가는데.. 참고로 이렇게 똑같이 쳤는데 제 로컬에는 POST에 색이 안 들어가네요... (모든 코드를 다 똑같이 쳤는데) 버젼 문제인가요?? <input type="submit" class="btn btn_primary" value="POST"
- 미해결작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지
오류
list, create모두 해당 오류가 발생하는 것 같습니다ㅠㅠ 다른 앱들과 같은 방식으로 했는데 무엇이 문제일까요? ㅠㅠ TemplateDoesNotExist at /projects/list/ Request URL: http://127.0.0.1:8000/projects/list/ TemplateDoesNotExist at /projects/create/ Request URL: http://127.0.0.1:8000/projects/create/