์ ์ฒด ๊ธ77 [Django ์๋ฌ] The view mediapractice.views.create didn't return an HttpResponse object. It returned None instead. ์ค๋ฅ ๋ด์ฉ: The view mediapractice.views.create didn't return an HttpResponse object. It returned None instead. view.create๊ฐ HttpResponse ๊ฐ์ฒด๋ฅผ ๋ฐํํ์ง ์์. ์๋ฌด๊ฒ๋ ๋ฆฌํดํ์ง ์์๋ค. ์ด์ฉ๋ค: forms๋ฅผ ์ด์ฉํด์ ์ด๋ฏธ์ง ์ฌ๋ฆฌ๋ ๊ธฐ๋ฅ์ ๋ง๋ค๋ ค๋ค ์๊ธด ์ค๋ฅ... ์คํ ์๋์ง, ํจ์, ๋ชจ๋ธ, ๋ชจ๋ธํผ, html ๋ค ๊ผผ๊ผผํ ๋ดค๋๋ฐ ๋ชป ์ฐพ๊ณ , ๊นํ๋ธ์์ ์ ์ ๋ด๊ฐ ์ผ๋ ์ฝ๋๋ฅผ ๋ดค๋ค. ์์ธ: ํผ ํ๊ทธ ์์ enctype="multipart/form-data"๋ฅผ ์จ์ฃผ์ง ์์์ ์๊ธด ์ค๋ฅ์๋ค... ๋ฅผ ๋ผ๊ณ ๊ณ ์ณ์ฃผ๋ ์ ๋์๊ฐ๋ค. 2020. 7. 18. [Django ์๋ฌ] CSRF verification failed. Request aborted. CSRF ๊ฒ์ฆ ์คํจ. ์์ฒญ์ด ์ค๋จ๋จ. create.html์ ํผ ํ๊ทธ ์์ {%csrf_token%}์ ๋ฃ์ด์ฃผ์ง ์์์ ์๊ธด ๋ฌธ์ ์ธ๋ฏ ํ๋ค. *์ฐธ๊ณ -CSRF ๊ณต๊ฒฉ์ด๋? Cross Site Request Forgery. ์น ์ดํ๋ฆฌ์ผ์ด์ ์ ์ทจ์ฝ์ ์ค ํ๋์ด๋ค. ์ธํฐ๋ท ์ฌ์ฉ์(ํฌ์์)๊ฐ ์์ ์ ์๋์๋ ๋ฌด๊ดํ๊ฒ ๊ณต๊ฒฉ์๊ฐ ์๋ํ ํ์(์์ , ์ญ์ , ๋ฑ๋ก ๋ฑ)๋ฅผ ์น ์ฌ์ดํธ์ ์์ฒญํ๊ฒํ๋ ๊ณต๊ฒฉ์ด๋ค. -{%csrf_token%} CSRF ๊ณต๊ฒฉ์ ๋ง๋ ์ฝ๋์ด๋ค. ํด๋ผ์ด์ธํธ์์ ํด๋น ํ์ด์ง๋ฅผ ์ ์ํ๋ฉด, Django์์ csrf token์ ๋ณด๋ด์ด cookie์ ์ ์ฅํ๊ณ , POST๋ก ์ ์กํ ๋ csrf token์ด ํจ๊ป ์ ์ก๋์ด ์ธ์ฆํ๋ ๋ฐฉ์์ด๋ค. token์ด ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์์. {%csrf_token%}์ ๊ทธ๋ฅ ๋ณด์.. 2020. 7. 18. [Django note] #3 ๋ด๊ฐ ๋ณด๋ ค๊ณ ๋ง๋๋ ์ฅ๊ณ ๋ ธํธ - update ํจ์, ์์ ๊ธฐ๋ฅ (์ ๋ด์ฉ์ด ๋ณด์ด๊ฒ ํ๊ธฐ) ๋ฉ์ฌ ์ฅ๊ณ ๊ฐ์๋ฅผ ๋ฃ๊ณ update ํจ์๋ฅผ ์ ์ํ๋ฉด์, '์ ์์ ์ด๋ผ๋ฉด์ ๊ทธ๋ฅ ์ ๊ธ์ฐ๋๊ฑฐ๋ ๋๊ฐ์ ๋น ์ฐฝ์ด ๋์ฌ๊น..'๋ผ๋ ์๊ฐ์ ํ๋๋ฐ, ์ ๋ง ๊ฐ์ฌํ๊ฒ๋ ์ด์์ง๋์ด ๋ด ์๊ฐ์ ์์์ฑ์๊ณ ๋จผ์ ์๋ ค์ฃผ์ จ๋ค.....๐ญ๐ญ๐๐ ๊ฐ์ฌํฉ๋๋ค๊ฐ์ฌํฉ๋๋ค๊ฐ์ฌํฉ๋๋ค... ๋ด ์ฝ๋(์์ ํ์ด์ง๋ฅผ ๋ณด๋ฉด ์ ๋ ฅ๊ณต๊ฐ์ ์๋ฌด ๊ฒ๋ ์์ด ๋์ด) def update2(request, pk): portfolio = get_object_or_404(Portfolio, pk=pk) modify = NewPort(request.POST, request.FILES, instance=portfolio) if modify.is_valid(): modify.save() return redirect('portfolio') return render(r.. 2020. 7. 17. [ONF] ํจ์ฆ 1๊ธฐ ๋ชจ์ง ์ฐ์ ๋๋์ด.. ์ ๋ ํ๋ค ์ ๋ง๋ฃจ 2020. 7. 17. [Django ์๋ฌ] NOT NULL constraint failed: blogapp_blog.pub_date ์์ธ: views.py์์ newblog(์๋ก์ด ๊ธ์์ฐ๋ ํจ์)๋ฅผ ์ ๋ชป ์ ์ํจ. ์๋ฌ ๋ ์ฝ๋ #views.py ์๋ฌ ๋ ์ฝ๋ def newblog(request): if request.method=='POST': blog=BlogPost(request.POST) if blog.is_valid(): blog.save(commit=False) #ํ๋ฆฐ ๋ถ๋ถ blog.pub_date=timezone.now() blog.save() return redirect('home') else: blog=BlogPost() return render(request, 'new.html', {'blog':blog} ์์ ํ ์ฝ๋ #views.py ์์ ํ ์ฝ๋ def newblog(request): if request.metho.. 2020. 7. 17. [Django note] #2 ๋ด๊ฐ ๋ณด๋ ค๊ณ ๋ง๋๋ ์ฅ๊ณ ๋ ธํธ (ํ ํ๋ฆฟ ์์, url ๊ณ์ธต์ ๊ด๋ฆฌ) ํ ํ๋ฆฟ ์์ 1. ํ๋ก์ ํธ ํด๋ ์์ templatesํด๋๋ฅผ ๋ง๋ค๊ณ ๊ทธ ์์ base.html ๋ง๋ค๊ธฐ ์ค๋ณต๋๋ ๋ด์ฉ๋ ์ฑ์๋ฃ๊ธฐ 2. settings.py์ base.html์ ์์น๋ฅผ ์๋ ค์ฃผ๊ธฐ TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': ['ํ๋ก์ ํธ ์ด๋ฆ/templates'], 'APP_DIRS': True, ... 3. base.html์ ๋ด์ฉ์ด ๋ค์ด๊ฐ ๋ถ๋ถ์ ์๋ ค์ฃผ๊ธฐ {%block contents%} {%endblock%} #block contents์์ 'contents'๋ ๋ฐ๊ฟ์ธ ์ ์๋ค. (title, sidebar ๋ฑ๋ฑ..) 4. ๋ด์ฉ์ ํด๋นํ๋ html๋ก ๊ฐ์ {%extends 'bas.. 2020. 7. 16. ์ด์ 1 ยทยทยท 9 10 11 12 13 ๋ค์