Setting Up Django for Hand Written Digits Recognition Project

ဒီေန့ Django ဆုိတဲ့ Python Web Framework ကုိ ဘယ္လုိ setup လုပ္ရမယ္ကုိျပသြားမွာပါ။ Python web framework ေတြကုိ စေလ့လာတဲ့ သူေတြအေနနဲ့ Django or Flask ဆုိတဲ့ ျပသနာကုိ အျမဲတမ္းၾကဳံေနရမွာပါ။က်ြန္ေတာ္ဘာကုိ choose လုပ္သင့္တယ္ထက္ ဒီ tutorial မွာ ဘယ္လုိ setup လုပ္ရမယ္ကုိျပမွာပါ

ဒီေန့ Django ဆုိတဲ့ Python Web Framework ကုိ ဘယ္လုိ setup လုပ္ရမယ္ကုိျပသြားမွာပါ။

Python web framework ေတြကုိ စေလ့လာတဲ့ သူေတြအေနနဲ့ Django or Flask ဆုိတဲ့ ျပသနာကုိ အျမဲတမ္းၾကဳံေနရမွာပါ။က်ြန္ေတာ္ဘာကုိ choose လုပ္သင့္တယ္ထက္ ဒီ tutorial မွာ ဘယ္လုိ setup လုပ္ရမယ္ကုိျပမွာပါ။အဲ့တာ မေျပာခင္ Django နဲ့ Flask က ဘာကြာလဲဆုိ Flask က micro projectေတြမွာ ျပီးေတာ့ ပုိျပီး ကုိ့code ကုိ control လုပ္ခ်င္တယ္ဆုိ Flask က ပုိအဆင္ေျပပါတယ္။Django က ေတာ့ Projectအၾကီးေတြနဲ့ Django ကိုအသုံးျပဳမယ္ဆုိရင္ေတာ ့Django Way အတုိင္း ေရးဖုိ့လုိအပ္ပါတယ္။

က်ြန္ေတာ္တုိ့ မစခင္ ဒီ tutorial မွာ အရင္ပတ္တုန္းက တင္ေပးခဲ့တဲ့ HTML5 canvas for number drawing က code file ကုိ download သြားလုပ္ထားရင္ ပုိအဆင္ေျပပါမယ္။က်ြန္ေတာ္တုိ့ အဲ့က် html & js code file ေတြကုိ ဘယ္လုိ Django မွာsetup လုပ္ရမလဲကုိျပသြားမွာပါ။

က်ြန္ေတာ္တုိ့ ဒီမွာ Python Environment ကုိ Setting Up Python Environment For Hand Written Digits Recognition Project မွာ ဘယ္လုိ setup လုပ္ရမယ္ကုိ ျပထားပါတယ္။မိတ္ေဆြသြားၾကည့္ျပီး setup လုပ္ျပီးျပီလုိ့ထင္ပါတယ္။

က်ြန္ေတာ္ မိတ္ေဆြတုိ့ ေဒါင္းေလာ့ လုပ္ျပီးျပီလုိ့ ယူဆျပီး စလုိက္ရေအာင္။

က်ြန္ေတာ္တုိ့ပထမဦးဆုံး အေနနဲ့ Django ကုိ install လုပ္ရေအာင္။

က်ြန္ေတာ္တုိ့ Setting Up Python Environment For Hand Written Digits Recognition Project တုန္းက Pyrobocity ဆုိတဲ့ virtualenv ကုိ setup တူတူလုပ္ခဲ့ၾကပါတယ္။အဲ့ virtualenv ထဲမွာပဲ django ကုိ install လုပ္လုိက္ပါတယ္။

က်ြန္ေတ္ာတို့ pillow ကေတာ့ Django မွာ Image processing တြက္သုံးလုိ့ Install လုပ္ေပးရပါတယ္။ဒီမွာ က်ြန္ေတာ္ Django rest framework ကုိ မိတ္ဆက္ေပးခ်င္လုိ့ တမင္ rest framework ကုိသုံးျပီးေရးျပတာပါ။Rest Framework ကေတာ့ ရွင္းပါတယ္ API ေတြ တည္ေဆာက္ဖုိ့ပါ။

အဲ့တာဆုိ က်ြန္ေတ္ာတုိ့ django project တစ္ခု create လုပ္လုိက္ရေအာင္။

အခုဆုိရင္ေတာ့က်ြန္ေတာ္တုိ့ django project တစ္ခုကုိ create လုပ္ျပီးသြားပါျပီ။တကယ္အလုပ္လုပ္လား မလုပ္လားစမ္းရေအာင္ က်ြန္ေတ္ာတုိ့ ေအာက္က command ကုိ run ျပီး website homepage ကုိသြားၾကည့္ရေအာင္။

အခုဆုိ http://127.0.0.1:8000/ ကုိသြားလုိက္ရင္ Django Home Page ကုိ ေတြ့ရမွာပါ။

က်ြန္ေတာ္တို့ ေအာင္ျမင္စြာ Django Project ကုိ create လုပ္ျပီးပါျပီ။ဒါဆုိ က်ြန္ေတာ္တုိ့ HTML5 canvas for number drawing ပုိ့စ္ တုန္းက download လုပ္ခဲ့တဲ့ html နဲ့ js file ကုိ setup လုပ္ၾကရေအာင္။အခု src ထဲက handwritten ဆုိတဲ့ folder ထဲ၀င္လုိက္ရင္ settings.py နဲ့ urls.py ဆုိျပီးေတြ့ရမွာပါ။နာမည္ေတြတုိင္း ဒီdjango projectရဲ့  လုိအပ္တဲ့ settings ေတြကုိ အဲ့ထဲမွာ ထပ္ထည့္ရျပီး urls.py ကေတာ့ ဒီ urls.pyထဲမွာ ပါတဲ့ လမ္းေၾကာင္းေတြကုိပဲ သြားခြင့္ေပးတာပါ။

အခု က်ြန္ေတာ္တုိ့ လုိအပ္တဲ့ settings ေတြထည့္ရမွာမုိ့လုိ့ settings.py file ကုိတစ္ခ်က္ဖြင့္ျပီး ေအာက္ဆုံးမွာ ေအာက္က code ေလးထပ္ထည့္လုိက္ရေအာင္။

  • ဒီေနရာမွာ အေပါ္က settings ေတြကုိ ဖ်က္စရာမလုိပါဘူးေနာ္ ေအာက္ကပဲ ထပ္ထည့္ေပးရမွာပါ။အခု က်ြန္ေတာ္တုိ့ static directory ရယ္ ပုံေတြကုိ upload လုပ္တဲ့အခါ သိမ္းဖုိ့ directory ရယ္ကုိ သတ္မွတ္ျပီးပါျပီ။ပုံေတြကုိ upload လုပ္ဖုိ့ settings ကမလုိပါဘူး Media က ဒီ projectတြက္ ဒါေပမဲ့ က်ြန္ေတာ္က beginner ေတြတြက္ ရည္ရြယ္ျပီးေရးတာမုိ့လို့ ထည့္ျပထားတာပါ။

အခုဒါဆုိ က်ြန္ေတာ္တုိ့ js,img,css စတာေတြသိမ္းဖုိ့ static folder ရယ္ media ျဖစ္တဲ့ image,video ေတြသိမ္းဖုိ့folder ရယ္ က်ြန္ေတာ္တုိ ့User ကုိ access မေပးတဲ့ protected_media ရယ္ စတာေတြကုိ တည္ေဆာက္ရမွာပါ။

ဒါဆုိက်ြန္ေတာ္တုိ့ Project structure ကုိ ၾကည့္ရင္နားလည္သြားပါလိမ့္မယ္။

  • handwritten
    • media
    • protected_media_root
    • src
      • handwritten
      • static
        • js
          • paper-full.min.js
      • templates
      • db.sqlite3
      • manage.py
    • static_cdn

က်ြန္ေတာ္ေျပာခဲ့တဲ့ Django way အတုိင္း media ရယ္ protected_media_root ရယ္ static_cdn ဆုိျပီး static file ေတြကုိ static_cdn ထဲ CDN version အေနနဲ့ collect လုပ္ေပးရပါတယ္။အဲ့တာဆုိ က်ြန္ေတာ္တုိ့ cached လုပ္ျ႔ပီး ပုိျမန္လာတယ္ေပါ့ေနာ္။က်ြန္ေတာ္တုိ့ settings ေတြထဲမွာလဲ

STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), “static_cdn”)

MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR), “media”)

PROTECTED_MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR), “protected_media_root”)

က်ြန္ေတာ္တုိ့ project directory ျဖစ္တဲ့ BASE_DIR ရဲ့ ေရွ့တစ္ဆင့္ကုိယူျပီး ျပန္join ထားတာေတြ့မွာပါ။အဲ့တာေၾကာင့္ အျပင္ directory မွာတည္ေဆာက္ထားတာပါ။

အခု က်ြန္ေတာ္တုိ ့project directory ျဖစ္တဲ့ src ထဲမွာ static နဲ့ templates folderေတြကုိ ေတြ့ရမွာပါ။က်ြန္ေတာ္တုိ့ HTML5 canvas for number drawing ပုိ့စ္တုန္းက download လုပ္ထားတဲ့ paper js ရယ္ html file ရယ္ကုိ ထည့္ရမွာပါ။ဒီေနရာမွာ static ကုိ settings ထဲမွာထည့္ျပီးေပမယ့္ templates directory ကုိ settings ထဲမွာ ဘယ္ folder သုံးမယ္ဆုိတာမေျပာရေသးပါဘူး။အဲ့ေတာ့ အရင္ဆုံးသြားထည့္လုိက္ရေအာင္။

settings file ရဲ့ အလယ္ေလာက္မွာ အေပါ္ကတုိင္း templates ဆုိတာကုိေတြ့ရမွာပါ။အဲ့ထဲမွာ DIRS  ဆုိတဲ့ေနရာက empty list [] ျဖစ္ေနပါလိမ့္မယ္။အဲ့ေနရာမွာ က်ြန္ေတာ္ bold ေလးတင္ေပးထားတဲ့ စာေၾကာင္းေလးကုိ ထည့္ေပးမယ္ဆုိ template directory မွန္းသိသြားပါလိမ့္မယ္။

အဲ့တာဆုိ က်ြန္ေတ္ာတုိ့ static ထဲက js folder ထဲမွာ download လုပ္လုိ့ရတဲ့ paper js ကုိထည့္လုိက္ပါ။templates folder ထဲမွာေတာ့ home.html ကုိထည့္လုိက္ပါ။ဒီေနရာမွာ က်ြန္ေတာ္တုိ့ home.html မွာ Django ပုံစံေျပာင္းတာမို့ ျပင္စရာေလးေတြရွိပါတယ္။

 

အဲ့မွာ အေပါ္ဆုံးမွာ က်ြန္ေတာ္ {% load staticfiles %} ဆုိျပီး static file ေတြကုိ loading တင္ေပးရပါတယ္။အျမဲအေပါ္ဆုံးမွာေရးေပးပါ။ျပီးေတာ့ က်ြန္ေတာ္ နဂုိလုိ js external file ကုိ django way အတုိင္း

<script type=”text/javascript” src=”{% static ‘js/paper-full.min.js’ %}”></script>

ဒါမ်ိုးေျပာင္းခ်ိတ္ေပးရပါတယ္။က်န္တာေတာ့ပုံမွန္ပါပဲ။က်ြန္ေတာ္ဒီမွာ တမင္စုံေအာင္ျပခ်င္လုိ့ စာနည္းနည္းရွည္သြားမယ္။မိတ္ေဆြတုိ့ကုိ တျခားနည္းလမ္းေတြထက္စာရင္ ေသခ်ာနည္းနည္းစုံေအာင္ျမင္ရေအာင္လုိ့ပါ။

အခုက်ြန္ေတာ္တုိ့ static file ေကာ template ေကာ တည္ေဆာက္ျပီးေပမယ့္ ဘယ္ url သြားမွ ဒီtemplate ကုိျပမယ္ဆုိတာမေျပာရေသးပါဘူး။Django မွာ အပုိင္းအားလုံးက app ေတြနဲ့ အလုပ္လုပ္ပါတယ္။User registration,blogging,payment စသလုိမ်ိုးေပါ့ app ေတြနဲ့ ခြဲေရးရပါတယ္။အဲ့ေတာ့ က်ြန္ေတာ္တုိ့ django way အတုိင္း recognize ဆုိတဲ့ app တစ္ခုကုိ create လုပ္ရေအာင္။

src လမ္းေၾကာင္းထဲမွာပဲ ေအာက္က command ကုိ run လုိက္ပါ။

အခုဆုိ recognize ဆုိတဲ့ folder ကုိ src လမ္းေၾကာင္းထဲမွာ ထပ္တုိးျပီးေတြ့ရမွာပါ။အခုဆုိ home page မွာ က်ြန္ေတာ္တုိ့ template ကို ျမင္ရေအာင္ေရးပါေတာ့မယ္။

အခု recognize ဆုိတဲ့ folder ကုိၾကည့္လုိက္မယ္ဆုိ views.py ဆုိတဲ့ file ကုိေတြ့ရမွာပါ။ေအာက္က code ေလးေတြထည့္လုိက္ရေအာင္ views.py ထဲကုိ

Django မွာ function base view နဲ့ class base view ဆုိျပီးရွိပါတယ္။ဒီမွာေတာ့ က်ြန္ေတာ္ function base view ကုိပဲသုံးထားတာပါ။က်ြန္ေတာ္ေရးထားတာရွင္းပါတယ္။အကယ္လုိ့ request လာမယ္ဆုိ home.html file ကုိ render လုပ္ေပးပါဆုိတာပါပဲ။

အခုက်ြန္ေတာ္တုိ့ ဘယ္url ကုိသြားရင္ home ဆုိတဲ့ method ကုိ runမယ္ကုိ ေျပာယံုပါပဲ။handwritten ဆုိတဲ့ folder ထဲမွာ ulrs.py ကုိသတိရမွာပါ။အဲ့file ထဲမွာ အနည္းငယ္ထပ္ထည့္ယံုပါပဲ။

အခုဆုိ home pageျဖစ္တဲ့ domain(http://www.example.com) ကုိလာတာနဲ့ home methodကုိ သြားေခါ္ျပီး home.html file ကုိ render လုပ္ေပးမွာပါ။

မိတ္ေဆြရဲံ http://127.0.0.1:8000 ကုိျပန္သြားလုိက္ရင္ ဒါမ်ိုးေတြ့ရမွာပါ။

Done!!!က်ြန္ေတာ္တုိ့ django မွာ setup လုပ္ျပီးပါျပီ ေနာက္တစ္ပတ္က်ရင္ေတာ့ api ကုိ လုပ္ျပမွာပါ။Stay tuned!!

ေက်းဇူးတင္ပါတယ္။ေနာက္ပုိ့စ္မွာေတြ့မယ္ေနာ္။

Share:
Tags:

Leave a Reply