๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Django_Web

[Django] ํŒŒ์ผ ์—…๋กœ๋“œ ๊ธ€๋กœ๋ฒŒ ์„œ๋น„์Šค ๊ตฌํ˜„ํ•˜๊ธฐ

by ๋„์บ๋ฆฌ๐Ÿฑ 2021. 6. 9.
๋ฐ˜์‘ํ˜•

https://github.com/JiYoungDo/Capstone-Design

 

โœ๏ธ  Rough Logic

์‚ฌ์šฉ์ž๋Š” json ํŒŒ์ผ์„ ์—…๋กœ๋“œ๋ฅผ ํ•œ๋‹ค.

json ํŒŒ์ผ์„ ์—…๋กœ๋“œ ๋ฐ›์œผ๋ฉด "์ง  ์•Œ๊ณ ๋ฆฌ์ฆ˜"์„ ๋Œ๋ ค์„œ, "first_send" ์™€ " last_recv" ๋ฅผ ์•Œ์•„๋‚ธ๋‹ค. 

์‚ฌ์šฉ์ž๊ฐ€ ํ•ด๋‹น ๊ฐ’์„ ์ €์žฅํ•œ๋‹ค๋Š” ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด, ์ด ๋‘๊ฐ€์ง€ ๊ฐ’(first_send, last_recv)์„ ๊ฐ–๋Š” ํด๋ž˜์Šค(๋ชจ๋ธ)๋กœ ์ €์žฅํ•œ๋‹ค.

์‚ฌ์šฉ์ž๋Š” ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋งˆ๋‹ค ์ด๋ฆ„์„ ๋ถ™์—ฌ์„œ ๊ฐ๊ฐ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. 

์ €์žฅํ•œ ๊ฐ’๋“ค์„ ํ†ตํ•ด์„œ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ฆด ์ˆ˜ ์žˆ๋‹ค. 

โ˜‡

 ์•„๋‹ˆ๋ฉด, ์–ด๋ ˆ์ด๋ฅผ ๋‹ด๋Š” ํ•œ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๊ณ  ๊ฑฐ๊ธฐ์— ์›ํ•˜๋Š” ๊ฐ’๋“ค์„ ๋ชจ๋‘ ๋„ฃ์œผ๋ฉด ๊ทธ ๊ฐ์ฒด์— ๋Œ€ํ•ด์„œ ๊ทธ๋ž˜ํ”„๋ฅผ ๋ชจ๋‘ ๊ทธ๋ฆฌ๋Š”๊ฑด? ๊ทธ๊ฒŒ ๊น”๋”ํ• ๊ฒƒ ๊ฐ™์€๋ฐ?

 

์•„ํ•˜...๋กœ๊ทธ์ธ๋„ ์žˆ์–ด์•ผ ๊ฒ ๋‹ค. ์•„๋ฌด๋‚˜ ์™€์„œ ํŒŒ์ผ ๋‹ค ์—…๋กœ๋“œ ํ•˜๋ฉด ๋ชจ๋‘์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์‹ธ์ผํ…Œ๋‹ˆ๊นŒ. 

์–ด๋ ˆ์ด๋ฅผ ๋‹ด๋Š” ํ•œ ๊ฐ์ฒด์— ๋น„๋ฐ€๋ฒˆํ˜ธ ์„ค์ •..์€..?

 

 

๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป ๊ณผ์ •

โ–  url ์„ค์ • ๋ฐ html ์„ค์ •

์–ด๋–ค์‹์œผ๋กœ ํ˜ธ์ถœ ๋˜๋Š”๊ฐ€!

 

โ–   ์—…๋กœ๋“œ ๋ฐ›์€ ํŒŒ์ผ์„ ๋‹ต์„ '/media/'

settings.py
import ์‹œ์— ์ฃผ์˜! 

 

โ–   FileSystems Storage

๊ด€๋ จ๋œ ์—ฌ๋Ÿฌ ๋ฉ”์†Œ๋“œ (save, delete ..) ๋Š” ์•„๋ž˜ ์ฐธ๊ณ ์— ์ ์–ด ๋†“์€ "docs.djangoproject.com" ์—ฌ๊ธฐ์— ์•„์ฃผ ์ž์„ธํžˆ ์ ํ˜€์žˆ์œผ๋‹ˆ, 

๋ฉ”์†Œ๋“œ์˜ ๋ฐ”์ด๋ธ”? ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉฐ ์ฐธ๊ณ ํ•˜๋ฉด ๋„์›€์ด ๋งŽ์ด ๋œ๋‹ค!!

 

์š” FileSystemsStorage์˜ ์žฅ์ ์œผ๋กœ๋Š” ๊ฐ™์€ ์ด๋ฆ„, ๊ฐ™์€ ํŒŒ์ผ์„ ์—…๋กœ๋“œ ํ•  ๋•Œ์— ๊ธฐ์กด ํŒŒ์ผ์„ ์˜ค๋ฒ„๋ผ์ด๋”ฉ ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์ด ์žˆ๋‹ค. (์˜ˆ๋ฅผ ๋“ค์–ด ์„ค๋ช…ํ•˜๋ฉด ์ฒซ๋ฒˆ์งธ๋กœ cat1.png ๋ฅผ ์˜ฌ๋ฆฌ๊ณ  ๋‘๋ฒˆ์งธ๋กœ ๋˜‘๊ฐ™์€ ๊ฒƒ์„ ์˜ฌ๋ฆฌ๋ฉด ๋‘๋ฒˆ์งธ๋กœ ์˜ฌ๋ฆฐ ํŒŒ์ผ ๋ช…์€ ๋žœ๋ค์œผ๋กœ ์ฒ˜๋ฆฌ๋œ๋‹ค.)

 

 

โ–   PythonAnywhere ๊ฐ€์ƒ ๋จธ์‹ ์—๋„ ๋˜‘๊ฐ™์ด ํ•ด์ค€๋‹ค! ๊ทธ๋ž˜์•ผ ๊ธ€๋กœ๋ฒŒ ์„œ๋น„์Šค๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ˆ๊นŒ!

์šฐ์„  ๋กœ์ปฌ์—์„œ ์ž‘์—…ํ•œ ๊ฒƒ์„ ์ž์‹ ์˜ ๋ ˆํฌ์ง€ํ„ฐ๋ฆฌ์— ํ‘ธ์‹œํ•ด์ฃผ๊ณ , 

PythonAnywhere ๊ฐ€์ƒ ๋จธ์‹ ์—์„œ pull ํ•ด์ค€๋‹ค์Œ, manage.py ๋ฅผ migrate ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

์•„๋ž˜ ์‚ฌ์ง„์—์„œ์ฒ˜๋Ÿผ ๋Œ€์‹œ๋ณด๋“œ "Files" ์— ๋“ค์–ด๊ฐ€์žˆ๋Š” ๋‚ด๊ฐ€ ์ €์žฅํ•œ ์ด๋ฏธ์ง€ ํŒŒ์ผ์ด ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

json ๋„ png ๋„ ์ž˜๋“ค์–ด๊ฐ„๋‹ค. (json ์ด ์ฃผ ๋ชฉ์ )

 

๊ทธ ๋ˆ„๊ตฌ๋‚˜ ์•„๋ž˜ ๋งํฌ๋ฅผ ๋“ค์–ด๊ฐ€๋ฉด ์•„๋ž˜ ์‚ฌ์ง„ ๊ฐ™์€ ๊ท€์—ฌ์šด ์ฒด๋ฆฌ(์šฐ๋ฆฌ์ง‘ ๋ƒฅ์ด๐Ÿ’) ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“Œ ์žฅ๊ณ ์˜ media url์„ ์„ค์ •ํ•ด ๋†“์•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค!  ์•„๋ž˜ ๋ถ€๋ถ„! 

์ฃผ์˜ํ• ์ ! ๋””๋ ‰ํ† ๋ฆฌ ๋ช…์ด media ์—ฌ์„œ ๊ทธ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ ‘๊ทผํ•˜๋Š” ๊ฐœ๋…์ด ์ ˆ๋Œ€ ์ ˆ๋Œ€ ์•„๋‹ˆ๋ž๋‹ˆ๋‹น) 

 

MEDIA_URL = '/media/'

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

 

(TMI ) VS Code ๋ณต๋ถ™ ์ƒ‰์ด ๋„ˆ๋ฌด ์ด์˜๋„ค์š”. 

http://carrie.pythonanywhere.com/media/wink.png

 

 

 

๋˜ํ•œ views ์—์„œ ์ด๋ฏธ์ง€๋ฅผ ์ €์žฅํ•  ๋•Œ ํ•ด๋‹น url ์„ ๋ณ€์ˆ˜์— ๋„ฃ์–ด ๋นผ์„œ, ๋ Œ๋”๋ง์‹œ html ์— ๋ณด๋‚ด์ฃผ๊ณ , 

html ์—์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ์ž‘์„ฑ ํ•˜๋ฉด ์•„๋ž˜ ์‚ฌ์ง„์ฒ˜๋Ÿผ ํด๋ฆญํ•˜๋ฉด ์‚ฌ์ง„์„ ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ๋„ ํ•  ์ˆ˜ ์žˆ๋‹ค. 

{% if url %}

<p>Uploaded file : <a href="{{url}}">{{ url }}</a></p>

{% endif %}

 


๐Ÿ‘“ ์ฐธ๊ณ 

https://www.youtube.com/watch?v=Zx09vcYq1oc&t=914s 

https://dontdiethere.tistory.com/43

https://docs.djangoproject.com/en/3.2/

 

 

๐Ÿ•ถ ์ด๋Ÿฐ ๊ฒƒ๋„ ์žˆ๋‹ค! ๋‚˜์ค‘์— ์ฐธ๊ณ (Django ๋กœ ์ฐจํŠธ ๊ทธ๋ฆฌ๊ธฐ)

https://dowtech.tistory.com/3

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€