Deylik, siz “/login/” pagega request yubordingiz(shu pageni rosa ovora qildik bugun :-).
Requests viewga yetib borgach, u yerda qayta ishlanadi va view response yuboradi. E’tibor bering, bu responseni view o’zi ishlab chiqib, yuborayapti.
Lekin u response tarkibida faqat HTML kod bor, sababi templatening o’zida HTML kodlar bor. JS yoki CSS kodlari esa templatega faqat chaqirilgan, lekin templatening ichida emas. Demak, view yuborgan responseda hali CSS va JS qismlari yo’q.
Shu response bizning browserimizga yetib kelishi bilan, browserimiz uni o’qishni boshlaydi. Qarab ko’rsa-ki, u chaqirgan CSS va JS fayllar hali yo’q. Shunda browser yana qaytadan serverga request yuborib, kerakli fayllarni so’raydi. Fayl so’ziga e’tibor bering.
Lekin bu safar request viewgacha yetib kelmaydi. Sababi, bu request tepadagidek qayta ishlab, biror narsani hisoblab, databasedan biror ma’lumot olishni talab qilmaydi.
Unga faqat server xotirasida, ma’lum manzilda turgan fayl kerak. Biz esa viewni bezovta ham qilmay, so’raganini berib yuboramiz.
Mana shu turdagi, ya’ni qayta ishlanmay, o’z holicha xotiradan olinib response ko’rinishida yuboriladigan fayllar static deyiladi.
Development jarayonida djangoning o’z serveri static filelarni ham yetkazib bersa-da, loyiha tayyor bo’lib, productionga qo’yilayotganda bu tavsiya qilinmaydi.
O’rniga, boshqa web server, masalan, Nginx ishlatish tavsiya qilinadi.
U esa requestni url dispatcherdan ham oldin kutib oladi.
Ko’pchilik djangoni yangi o’rganishni boshlaganlar odatda, official documentationsni o’qishni yoqtirishmaydi. Documentation yozayotganda djangoni ishlab chiqqan dasturchilar oldida 2 xil yo’l bor edi: Yo djangoning qulayligini ko’rsatish, yoki to’la kuchini ko’rsatish. Ikkalasini bittada qilish deyarli ilojsiz. Ular ikkinchi yo’lni tanlashdi.
Shuning uchun yangilar uchun django documentation o’ta tushunarsiz va qiyin ko’rinadi. Shuning uchun boshqa tutoriallarni ma’qul ko’rishadi.
Lekin django bo’yicha bilimlaringiz oshib borgan sari django documentation qanchalik foydali, zo’r yozilganini his qilasiz.
Endi esa dastur kodlariga to’xtalib o’tamiz .Biz buning uchun eng asoiy qism bo’lmish views.py faylidagi kodlarni ko’ramiz
Bosh sahifani chaqirish kodi
def index(request):
return render(request, "index.html")
.
Endi esa yozilgan kodni tekshirish kodi
ef runcode(request):
if request.method == "POST":
codeareadata = request.POST['codearea']
try:
# save original standart output reference
original_stdout = sys.stdout
# change the standard output to the file we created
sys.stdout = open('file.txt', 'w')
# execute code
exec(codeareadata) # example => print("hello world")
sys.stdout.close()
sys.stdout = original_stdout # reset the standard output to its original value
# finally read output from file and save in output variable
output = open('file.txt', 'r').read()
except Exception as e:
# to return error in the code
sys.stdout = original_stdout
output = e
# finally return and render index page and send codedata and output to show on page
return render(request, 'index.html', {"code": codeareadata, "output": output})
Biz asos kodlarni ko’rib chiqdik endi esa webdasturimizni ishga tushirishimiz uchun python manage.py runserver deb yozib ishga tushiramiz
Localhost:8000 portida ochiladi
Webdasturimiz ko’rinishi
Bu yerga kodni yozamiz
Mana bu yerda webdasturimiz ishlamoqda
Notog’ri kod yozsay natijani chiqarmaydi .Biz oddiy compilator yaratdik.
Xulosa
Men ushbu loyihamda python Django moduli yordamida online compilator yaratishga harakat qildim.Men ushbu loyihamni yaratishda juda ko’plab muamolarga duch keldim ularni bartaraf etish choralarini topishni o’rgandim
Do'stlaringiz bilan baham: |