묻고 답해요
163만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 (장고 4.2 기준)
공유자님 이 강의 공부 방법에 대한 질문입니다.
이 강의는 어떤 식으로 접근해야 되나요?이런 것이 있구나~ 라고 생각하고 넘어가야 하나요? 아니면 하나하나 다 알아가면서 넘어가는 것이 좋나요?
-
미해결파이썬/장고로 웹채팅 서비스 만들기 (Feat. Channels) - 기본편
도커와 연동 관련 질문드립니다.
version: '3.8' services: postgres: image: postgres:14 env_file: .env volumes: - postgres_data:/var/lib/postgresql/data networks: - backend django: build: context: ./backend dockerfile: Dockerfile ports: - "8000:8000" volumes: - ./backend:/app - static_volume:/app/myproject/staticfiles - ./frontend:/app/myproject/myapp/static/myapp - media_volume:/app/myproject/media depends_on: - postgres - redis environment: - PYTHONUNBUFFERED=1 - DJANGO_SETTINGS_MODULE=myproject.settings env_file: .env networks: - frontend - backend redis: image: redis:6 networks: - backend nginx: build: ./nginx volumes: - media_volume:/usr/share/nginx/html/media - static_volume:/usr/share/nginx/html/static - ./frontend:/usr/share/nginx/html/frontend ports: - "8443:8443" depends_on: - django networks: - frontend - backend adminer: image: adminer:latest restart: always ports: - "8080:8080" networks: - backend depends_on: - postgres volumes: postgres_data: static_volume: media_volume: networks: backend: frontend:docker-compose 설정인데요, 저희 팀원이 만들때 templates 폴더를 안쓰고 전부 .js 파일로 만들어놨습니다. 이런 경우 채팅 모듈을 추가하려고하면 어떤 방식으로 해야할까요. 강의외적인 부분 질문드려서 죄송합니다.
-
미해결파이썬/장고로 웹채팅 서비스 만들기 (Feat. Channels) - 기본편
채팅방 참여자 목록 - 채팅방 입장/퇴장 실시간 이벤트 처리
해당 기능을 구현까지 완료했고, 결과는 도출합니다.궁금한 점이 사용자가 채팅방을 나간 후 퇴장 처리 메세지가 창에 나타날 때 Delay? 나간 후 한참 시간이 지난 후에 나타나는데, 자연스러운 상황인지 아니면 제가 잘못한 건지 판단이 되지 않습니다..
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 (장고 4.2 기준)
mydjango.py 질문 있습니다.
vscode (windows)사용기존) mydjango02 폴더--> django 설치 --> startproject --> manage.py 생성 질문 1)mydjango 03 폴더 --> django 설치 --> django runserver가 돌아가지 않습니다.질문 2)이전에 따라하기에선 django runserver가 돌아갔었는데 디버그시 mydjango.py가 나타나지 않았습니다. 그래서 실습을 기존에 설치된 manage.py로 했는데 제가 어느 부분에서 실수 할 가능성이 있을까요?
-
미해결파이썬/장고로 웹채팅 서비스 만들기 (Feat. Channels) - 기본편
안녕하세요, onopen() 문제로 질문드립니다.
똑같이 코딩한거같은데 Uncaught InvalidStateError: Failed to execute 'send' on 'WebSocket': Still in CONNECTING이런 문제가 생겨 connect()에서 console.log로 this.ws 찍어보니까. readystate가 0에서 바뀌지 않고 onsubmit()에서도 0인걸 확인했습니다. 그래서 웹소켓이 연결되지 않았으니, this.ws.send()에서 걸리는것이라고 생각은하는데, 어디를 고쳐야 될지 모르겠습니다.{# Chat room #} {% extends "chat/base.html" %} {% block extra-style %} <style> .chat-message > div { background-color: #3b3b3b; color: #e1e1e1; border-radius: 0.8em; padding: 0.4em; margin: 0.4em 0; display: inline-block; white-space: pre-wrap; max-width: 80%; word-wrap: break-word; } </style> {% endblock %} {% block content %} <h2>채팅방 :{{ room_name }}</h2> {# 웹소켓으로 실시간 채팅 기능 구현하기 #} <div class="container"> <div class="row"> <div class="col-sm-12"> <div class="card" style="height: 600px;"> <div class="card-header"> 채팅방:{{ room_name }} </div> <div class="card-body overflow-hidden"> <div id="chat_messages" class="w-100 h-100 border-0 overflow-hidden overflow-scroll"></div> </div> <div class="card-footer"> <form id="message_form"> <input type="text" name="message" class="form-control" autofocus autocomplete="off" /> </form> </div> </div> <hr class="my-3" /> <a href="{% url 'chat:index' %}" class="btn btn-primary"> 대기실로 이동 </a> </div> </div> </div> {% endblock %} {% block extra-script %} <script> const handler = { chat_messages_tag: null, ws: null, retry: 0, init(){ console.log("handler.init() 실행됨"); this.chat_messages_tag= document.querySelector("#chat_messages"); document.querySelector("#message_form").addEventListener("submit", this.onsubmit.bind(this)); }, connect(ws_url){ if(this.ws) { this.ws.close(); } this.ws = new WebSocket(ws_url || this.ws?.url); console.log(this.ws, "연결1.") this.ws.onopen = this.onopen.bind(this); this.ws.onclose = this.onclose.bind(this); this.ws.onerror = this.onerror.bind(this); this.ws.onmessage = this.onmessage.bind(this); }, reconnect() { this.connect(); }, onopen(){ console.log("웹소켓 서버와 접속, : Room_chat"); this.retry = 0; }, onclose(event){ if (!event.wasClean) { console.error("웹소켓이 죽었거나, 네트워크 에러"); if (this.retry < 3) { this.retry++; setTimeout(() => { this.reconnect(); console.log(`[${this.retry}] 접속 재시도 ...`); }, 1000 * this.retry) } else { console.log("웹소켓 서버에 접속할수 없습니다. 메인페이지로 이동합니다."); window.location.href = "{% url 'chat:index' %}"; } } }, onerror(){ console.log("웹소켓 에러 발생. 메인페이지로 이동합니다."); window.location.href = "{% url 'chat:index' %}" ; }, onmessage(event){ const message_json = event.data; console.log("메세지 수신 :", message_json); const { type, message } = JSON.parse(message_json); switch (type){ case "chat.message": this.append_message(message); break; default: console.error('Invalid message type: &{type}'); } }, append_message(message){//인자로 받은 채팅 메세지 로그에 추가 const element = document.createElement("div"); element.className = "chat-message"; const wrapper = document.createElement("div"); wrapper.textContent = message; element.appendChild(wrapper); this.chat_messages_tag.appendChild(element); this.chat_messages_tag.scrollTop = this.chat_messages_tag.scrollHeight; }, onsubmit(event){ //입력된 채팅 메세지 문자열을 획득하고, 메세지 로그에 추가. event.preventDefault(); const form_data = new FormData(event.target); //폼필드의 값을 오브젝트로 변환하여 props로 저장하고, 폼필드는 리셋합니다. const props = Object.fromEntries(form_data); event.target.reset(); // reset form const { message } = props; console.log("웹소켓으로 전송할 메세지: ", message); console.log(this.ws, "onsubmit"); {#this.append_message(message);#} this.ws.send(JSON.stringify({ type: "chat.message", message: message, })) } }; handler.init(); const protocol = location.protocol === 'https:' ? 'ws:' : 'wss:'; const ws_url = protocol + "//" + location.host + "/ws" + location.pathname; handler.connect(ws_url); </script> {% endblock %}from django.urls import path from chat import consumers websocket_urlpatterns = [ path("ws/chat/<str:room_name>/chat/", consumers.ChatConsumer.as_asgi()), ] import os from channels.routing import ProtocolTypeRouter, URLRouter from django.core.asgi import get_asgi_application import app.routing import chat.routing os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings') django_asgi_app = get_asgi_application() application = ProtocolTypeRouter({ "http" : django_asgi_app, "websocket" : URLRouter( chat.routing.websocket_urlpatterns + app.routing.websocket_urlpatterns, ) })from django.shortcuts import render # Create your views here. def index(request): return render(request, "chat/index.html") def room_chat(request, room_name): return render(request, "chat/room_chat.html",{ "room_name": room_name, })
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 (장고 4.2 기준)
Django-Components의 0.128 세팅
최신 버전에선 강의의 설정을 적용할 수 없습니다. 아래의 것을 참고하세요. (강사님 이렇게 해도 되긋죠? 구조 제대로 이해 못한채 chatgpt에게 물으면서 했네요 ㅎㅎ; 강의 유지보수 하시기 힘드시겠어요. )django_components 0.128 설정1. 폴더명 및 트리구조 변경.myproj/├── core/│ ├── init.py│ ├── apps.py│ ├── src_django_components/ * 폴더명 변경. 하이픈 인식 못함.│ │ ├── init.py│ │ ├── modal_form.py * 상위로 이동│ │ ├── modal_form/│ │ │ ├── modal_form.html│ │ │ ├── modal_form.css│ │ │ ├── modal_form.js├── mysite/│ ├── settings.py│ ├── urls.py├── manage.py 2. settings.py INSTALLED_APPS = [ ..., 'django_components',]MIDDLEWARE = [ ..., "django_components.middleware.ComponentDependencyMiddleware", ]STATICFILES_FINDERS = [ "django.contrib.staticfiles.finders.FileSystemFinder", "django.contrib.staticfiles.finders.AppDirectoriesFinder", "django_components.finders.ComponentsFileSystemFinder", ]TEMPLATES = [ ..., "DIRS": [BASE_DIR / "core" / "src_django_components"], ], "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", ], "builtins": [ "django_components.templatetags.component_tags", # 추가된 부분 ], ...,STATICFILES_DIRS = [BASE_DIR / "core" /"src_django_components"]COMPONENTS = ComponentsSettings( dirs=[ Path(BASE_DIR) / "core" / "src_django_components", ]) 3. core/apps.py-modal_form 등록from django.apps import AppConfigfrom django_components import componentclass CoreConfig(AppConfig): default_auto_field = "django.db.models.BigAutoField" name = "core" def ready(self): from .src_django_components.modal_form import ModalForm component.registry.register("modal_form", ModalForm) # 설명: ModalForm 클래스를 modal_form 이름으로 등록합니다.
-
미해결플러터와 장고로 1시간만에 퀴즈 앱/서버 만들기 [무작정 풀스택]
emulator 실행오류
이렇게 빨간색으로 음영되어 있고..emulator를 실행하는데 Error fetching your Android emulators! Make sure your path is correct. Try running this command: "~\Library\Android\sdk\emulator\emulator" -list-avds 오류문구가 뜨면서 실행이 안되요
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 (장고 4.2 기준)
질문 아님.
리눅스로 하느라 힘들다..공식 문서 언제 다 읽고어떻게 선별적으로 잘 읽는지 GPT 없던 시절 .. .대단하다.
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 (장고 4.2 기준)
mydjango.py 실습 질문있습니다.
return HttpResponse(""" <!doctype html> <html lang="ko"> <head> <meta charset="UTF-8" /> <title>Melon List</title> <style> body { width: 400px; margin: 0 auto; } table { width: 100%%; border-collapse: collapse; } table, th, td { border: 1px solid black; } </style> </head> <body> <h1>Melon List</h1> <table> <thead> <tr><th>팀명</th><th>순위</th></tr> </thead> <tbody> %s </tbody> </table> </body> </html> """ % (partial_html,))여기에서 굳이 % (partial_html)) 또 잘 실행 되는데 % (partial_html,)) 쉼표를 사용하는 이유는 정확하게 뭔지 알 수 있을까요? gpt는 튜플로 만든다고 설명 해주었는데 td안에 튜플로 넣는 이유를 알고 싶습니다.
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 (장고 4.2 기준)
pycharm 개발환경 설정 오류
디버깅 버튼 비활성화를 풀기 위해 django server를 추가했습니다만, 다음과 같은 오류가 발생합니다. 이 문제는 어떤 문제 때문에 발생하는지 몰라 질문하게 되었습니다.
-
해결됨실전! Django 활용
강의와 .md 차이
안녕하세요. 강의 잘 보고 있습니다.깃허브에 제공해주신 섹션 마크다운 파일과 영상과 다를 때가 존재하고, 마크다운 파일에 내용이 적혀져 있지 않을 때도 존재합니다. 여유가 된시다면 main 브랜치에 섹션 마크다운 파일들 내용을 모두 채워주시면 감사하겠습니다. ! 더 보기 좋을 것 같아요
-
해결됨실리콘밸리 엔지니어가 가르치는 파이썬 장고 웹프로그래밍
0.0.0.0:8000 접속이 안됩니다
도커컴포즈 명령으로 실행시 localhost:8000은 접속이 되는데 .. 0.0.0.0:8000 도커서버로는 연결이 안됩니다 왜 그런가요?
-
미해결파이썬/장고로 웹채팅 서비스 만들기 (Feat. Channels) - 기본편
Consumer Instances 관련 질문 있습니다.
Consumer Instances를 어떻게 생각해야될지 이해가 잘 안되어 질문드립니다. 강의에 채널스 외부 그룹 채널 레이어 등을 그림으로 친절하게 표현해주셨는데 제가 정확하게 이해가 안되고 있습니다. 설명 부탁드려도 될까요? 감사합니다.
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 (장고 4.2 기준)
강의 듣다가 유료pycharm에 비해 vscode지원기능이 아쉬워서 확장프로그램 만들었는데 여기 공유해도 될까요?
04-10 장고 기본 CBV API (Generic display views) - ListView 강의를 듣던 중 index.html 에서 {% load django_bootstrap5 %}나 {% bootstrap_pagination %} 를 타고 들어가서 소스를 보는 기능이 전체검색 말고는 vscode에서 다른 방법이 없는 것 같아서 유료버전pycharm 처럼 흉내내서 확장프로그램을 만들어봤습니다. 저만 쓰게 될거같아서.. 필요하신 분들께 알리고 피드백을 받고 싶은 마음에 여기에 링크를 남기고 공유해도 혹시 괜찮을까요?https://github.com/southglory/python-package-definition-navigatorhttps://marketplace.visualstudio.com/items?itemName=QG-devramyun.python-package-definition-navigator감사합니다.
-
미해결파이썬/장고로 웹채팅 서비스 만들기 (Feat. Channels) - 기본편
안녕하세요, 요청은 채널스에서 먼저 받고, http 요청은 장고를 통해서 처리한다고 하셨는데요.
안녕하세요, 요청은 채널스에서 먼저 받고, http 요청은 장고를 통해서 처리한다고 하셨는데요. 그 의미를 정확하게 알고 싶습니다. 새해에도 건강하시고, "RAG 밑바닥부터 웹 채팅까지" 도 미리 감사드립니다.
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 (장고 4.2 기준)
중단점에 대한 질문 있습니다.
실습과장에서 중단점을 클릭 했고 디버그 했는데 중단점에서 멈추지 않고 텍스트 찍어준다면 어떤 문제가 있는 것 일까요. 구글링 해도 정확한 해답을 찾지 못해 이렇게 질문을 남기게 되었습니다.
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 (장고 4.2 기준)
todo / react 붙이는 깃주소를 받고 싶습니다.
안녕하세요.수강생입니다.이부분을 5번은 넘게 들은거 같은데 어려워요.깃주소주신것도 가서 봤는데구조도 잘 이해가 안되고todo 와 react만 연동되는 코드를 따로 깃에 주시면 안될까요?todo따로 react따로 폴더를 만들어주신거 같은데myreact01-cra 온전히 todo를 리엑트에 붙이는 깃주소를 따로 만들어주셨으면해서요.전부 한군데에 있어서 분석해보면서 하고는 있는데 저위의 3개의 카테고리중에2개만이라도 되고 싶은데다 합해서 20분수업도 안되는데 전 2분도 못쫓아가고 있어요.리엑트도 어느정도안다고 생각하고장고도 어느정도 안다고 생각하는데도어렵습니다. 흑....소스코드를 받고 싶습니다.인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 (장고 4.2 기준)
NoReverseMatch at /hottrack/archives/2023/
NoReverseMatch 자체가 되돌아갈 곳이 없다는 오류인 것은 알겠으나,왜 song_archive_year를 못찾는지 모르겠습니다. Viewclass SongYearArchiveView(YearArchiveView): model=Song date_field="release_date" # make_object_list = Trueurls.pyurlpatterns = [ ... path(route="archives/<int:year>/", view=views.SongYearArchiveView.as_view(), name="song_archive_year"), ] --- 혹시나 해서 View를 다음과 같이 했는데class SongYearArchiveView(YearArchiveView): model = Song date_field = "release_date" # 조회할 날짜 필드 make_object_list = True def get_queryset(self): year = self.kwargs['year'] # URL에서 'year' 값을 가져옴 return Song.objects.filter(release_date__year=year) 인지는 하는 것 같아요. 그런데 버튼은 없군요.
-
미해결파이썬/장고로 웹채팅 서비스 만들기 (Feat. Channels) - 기본편
기능 구현 질문 드립니다.
선생님 안녕하세요, 기능 구현하는데 힌트 좀 받고 싶어서 질문 드립니다. 메세지 차단 기능초대기능접속유저 부분에서 프로필 확인 기능을 넣고 싶습니다.아직 장고가 손에 붙질 않아서.. 어느 부분을 수정해야할지 감이 오지 않습니다. 한번 해볼수있게 힌트 좀 부탁드려도 될까요.감사합니다.
-
미해결작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지
실행에러질문
(.venv) PS C:\Users\LG\PycharmProjects\pragmatic> python manage.py runserver Watching for file changes with StatReloaderPerforming system checks...Exception in thread django-main-thread:Traceback (most recent call last): File "C:\Users\LG\PycharmProjects\pragmatic\.venv\Lib\site-packages\django\core\checks\urls.py", line 136, in check_custom_error_handlers handler = resolver.resolve_error_handler(status_code) File "C:\Users\LG\PycharmProjects\pragmatic\.venv\Lib\site-packages\django\urls\resolvers.py", line 732, in resolve_error_handler callback = getattr(self.urlconf_module, "handler%s" % view_type, None) ^^^^^^^^^^^^^^^^^^^ File "C:\Users\LG\PycharmProjects\pragmatic\.venv\Lib\site-packages\django\utils\functional.py", line 47, in get res = instance.__dict__[self.name] = self.func(instance) ~~~~~~~~~^^^^^^^^^^ File "C:\Users\LG\PycharmProjects\pragmatic\.venv\Lib\site-packages\django\urls\resolvers.py", line 711, in urlconf_module return import_module(self.urlconf_name) File "C:\Users\LG\AppData\Local\Programs\Python\Python313\Lib\importlib\__init__.py", line 88, in import_module return bootstrap.gcd_import(name[level:], package, level) ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "<frozen importlib._bootstrap>", line 1387, in gcdimport File "<frozen importlib._bootstrap>", line 1360, in findand_load File "<frozen importlib._bootstrap>", line 1331, in findand_load_unlocked File "<frozen importlib._bootstrap>", line 935, in loadunlocked File "<frozen importlib._bootstrap_external>", line 1026, in exec_module File "<frozen importlib._bootstrap>", line 488, in callwith_frames_removed File "C:\Users\LG\PycharmProjects\pragmatic\pragmatic\urls.py", line 25, in <module> path('account/', include('accountapp.urls')), ~~~~~~~^^^^^^^^^^^^^^^^^^^ File "C:\Users\LG\PycharmProjects\pragmatic\.venv\Lib\site-packages\django\urls\conf.py", line 39, in include urlconf_module = import_module(urlconf_module) File "C:\Users\LG\AppData\Local\Programs\Python\Python313\Lib\importlib\__init__.py", line 88, in import_module return bootstrap.gcd_import(name[level:], package, level) ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "<frozen importlib._bootstrap>", line 1387, in gcdimport File "<frozen importlib._bootstrap>", line 1360, in findand_load File "<frozen importlib._bootstrap>", line 1331, in findand_load_unlocked File "<frozen importlib._bootstrap>", line 935, in loadunlocked File "<frozen importlib._bootstrap_external>", line 1026, in exec_module File "<frozen importlib._bootstrap>", line 488, in callwith_frames_removed File "C:\Users\LG\PycharmProjects\pragmatic\accountapp\urls.py", line 4, in <module> from pragmatic.urls import urlpatternsImportError: cannot import name 'urlpatterns' from partially initialized module 'pragmatic.urls' (most likely due to a circular import) (C:\Users\LG\PycharmProjects\pragmatic\pragmatic\urls.py)During handling of the above exception, another exception occurred:Traceback (most recent call last): File "C:\Users\LG\AppData\Local\Programs\Python\Python313\Lib\threading.py", line 1041, in bootstrapinner self.run() ~~~~~~~~^^ File "C:\Users\LG\AppData\Local\Programs\Python\Python313\Lib\threading.py", line 992, in run self._target(*self._args, **self._kwargs) ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\LG\PycharmProjects\pragmatic\.venv\Lib\site-packages\django\utils\autoreload.py", line 64, in wrapper fn(*args, **kwargs) ~~^^^^^^^^^^^^^^^^^ File "C:\Users\LG\PycharmProjects\pragmatic\.venv\Lib\site-packages\django\core\management\commands\runserver.py", line 134, in inner_run self.check(display_num_errors=True) ~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\LG\PycharmProjects\pragmatic\.venv\Lib\site-packages\django\core\management\base.py", line 486, in check all_issues = checks.run_checks( app_configs=app_configs, ...<2 lines>... databases=databases, ) File "C:\Users\LG\PycharmProjects\pragmatic\.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:\Users\LG\PycharmProjects\pragmatic\.venv\Lib\site-packages\django\core\checks\urls.py", line 138, in check_custom_error_handlers path = getattr(resolver.urlconf_module, "handler%s" % status_code) ^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\LG\PycharmProjects\pragmatic\.venv\Lib\site-packages\django\utils\functional.py", line 47, in get res = instance.__dict__[self.name] = self.func(instance) ~~~~~~~~~^^^^^^^^^^ File "C:\Users\LG\PycharmProjects\pragmatic\.venv\Lib\site-packages\django\urls\resolvers.py", line 711, in urlconf_module return import_module(self.urlconf_name) File "C:\Users\LG\AppData\Local\Programs\Python\Python313\Lib\importlib\__init__.py", line 88, in import_module return bootstrap.gcd_import(name[level:], package, level) ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "<frozen importlib._bootstrap>", line 1387, in gcdimport File "<frozen importlib._bootstrap>", line 1360, in findand_load File "<frozen importlib._bootstrap>", line 1331, in findand_load_unlocked File "<frozen importlib._bootstrap>", line 935, in loadunlocked File "<frozen importlib._bootstrap_external>", line 1026, in exec_module File "<frozen importlib._bootstrap>", line 488, in callwith_frames_removed File "C:\Users\LG\PycharmProjects\pragmatic\pragmatic\urls.py", line 25, in <module> path('account/', include('accountapp.urls')), ~~~~~~~^^^^^^^^^^^^^^^^^^^ File "C:\Users\LG\PycharmProjects\pragmatic\.venv\Lib\site-packages\django\urls\conf.py", line 39, in include urlconf_module = import_module(urlconf_module) File "C:\Users\LG\AppData\Local\Programs\Python\Python313\Lib\importlib\__init__.py", line 88, in import_module return bootstrap.gcd_import(name[level:], package, level) ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "<frozen importlib._bootstrap>", line 1387, in gcdimport File "<frozen importlib._bootstrap>", line 1360, in findand_load File "<frozen importlib._bootstrap>", line 1331, in findand_load_unlocked File "<frozen importlib._bootstrap>", line 935, in loadunlocked File "<frozen importlib._bootstrap_external>", line 1026, in exec_module File "<frozen importlib._bootstrap>", line 488, in callwith_frames_removed File "C:\Users\LG\PycharmProjects\pragmatic\accountapp\urls.py", line 4, in <module> from pragmatic.urls import urlpatternsImportError: cannot import name 'urlpatterns' from partially initialized module 'pragmatic.urls' (most likely due to a circular import) (C:\Users\LG\PycharmProjects\pragmatic\pragmatic\urls.py) 강의랑 똑같이 코드를 치고 python manage.py runserver을 입력해서 실행하려 하는데 위 처럼 에러가 뜨는데 코드는 분명 똑같이친거 같은데 뭐가 잘못된건지 모르겠어요ㅠㅠ