ข้อความต้นฉบับ: http://www.devshed.com/c/a/Python/Karrigell-for-Python/
เนื่องจาก python ไม่ได้ได้รับการออกแบบมาโดยเฉพาะสำหรับการพัฒนาเว็บ ผู้ใช้ python จำนวนมากจึงกำลังพัฒนาโปรแกรมที่อนุญาตให้ python ทำงานบนกรอบงานได้ ของเว็บ Karrigell เป็นหนึ่งในเฟรมเวิร์กหลาม/เว็บมากมายในขณะนี้ บทความนี้จะให้ข้อมูลเบื้องต้นเกี่ยวกับ Karrigell
โดยย่อ
Karrigell เป็นเฟรมเวิร์กหลาม/เว็บที่ทรงพลังและยืดหยุ่นซึ่งนำเสนอโซลูชั่นที่หลากหลายสำหรับการพัฒนาเว็บ ที่สำคัญการติดตั้งและการใช้งานนั้นง่ายมาก แม้แต่ผู้เริ่มต้น python ก็จะไม่สับสนเมื่อใช้ Karrigell และ Karrigell ก็ไม่ได้จำกัดคุณสมบัติบางอย่างของ python เนื่องจากมีโครงสร้างที่เรียบง่าย คุณสามารถใช้เว็บเซิร์ฟเวอร์ของคุณเองเพื่อทำงานให้เสร็จได้ แต่การทำงานกับเว็บเซิร์ฟเวอร์อื่น ๆ (เช่น apache) ก็ทำได้ง่ายมาก ดังนั้นหากคุณเลือก Karrigell คุณยังคงสามารถใช้เว็บเซิร์ฟเวอร์ที่คุณเคยใช้มาก่อนได้
บทความนี้จะเริ่มจาก Karrigell มาเริ่มกันที่การติดตั้งและ แนะนำคุณสมบัติที่สำคัญหลายประการของ Karrigell
การติดตั้ง Karrigell
ดังที่ได้กล่าวไว้ข้างต้น การติดตั้ง Karrigell นั้นไม่ยุ่งยากเลย ขั้นตอนแรกที่คุณต้องทำคือดาวน์โหลด Karrigell ล่าสุดจาก SourceForge หลังจากที่คุณดาวน์โหลดแพ็คเกจ zip แล้ว ให้แยกไฟล์ออกเป็น ไดเรกทอรีที่ค้นหาง่าย จากนั้นดับเบิลคลิก Karrigell.py เพื่อเริ่มเว็บเซิร์ฟเวอร์ในตัวของ Karrigell หากคุณไม่ต้องการใช้ Karrigell กับเว็บเซิร์ฟเวอร์อื่น ๆ ในตอนนี้ การติดตั้ง Karrigell จะสิ้นสุดที่
นี่ ตั้งค่าเว็บเซิร์ฟเวอร์ของคุณให้ทำงานร่วมกับ Karrigell มาดูตัวอย่าง apache กัน ตอนนี้เราต้องการให้ Karrigell ทำงานบนพื้นหลังของ apache เพื่อที่ apache จะส่งคำขอที่เกี่ยวข้องไปยัง Karrigell
เนื่องจากโดยปกติแล้ว apache จะทำงานบนพอร์ต 80 คุณจึงต้องตั้งค่าพอร์ตอื่นที่รันอยู่สำหรับ Karrigell มีสองวิธีในการบรรลุวัตถุประสงค์นี้ วิธีหนึ่งคือใช้บรรทัดคำสั่งเพื่อทำให้เสร็จสมบูรณ์ หรือคุณสามารถเปลี่ยนไฟล์การกำหนดค่าของ Karrigell ได้ ดูวิธีการใช้บรรทัดคำสั่งเราจะรัน Karrigell บนพอร์ต 8080
C:Karrigell>Karrigell.py -P 8080
ประการที่สองคุณต้องค้นหา Karrigell.ini แล้วเพิ่มประโยค
port=8080
ตอนนี้คุณต้องกำหนดค่า apache เพื่อถ่ายโอนคำขอที่เกี่ยวข้องไปยัง Karrigell โดยทั่วไปคุณต้องการให้ apache จัดการคำขอไฟล์คงที่เช่น php คุณสามารถแชร์เส้นทางเดียวกันกับ apache หรือคุณสามารถตั้งค่าเส้นทางแยกกันได้ ต้องการ apache เพื่อส่งคำขอไปยัง Karrigell คุณต้องเพิ่มสิ่งต่อไปนี้ลงในไฟล์ httpd.conf ของ
apache
เขียนกฎใหม่ ^/(.*).py(.*) http://localhost:8080/$1.py$2 [L,P]
เขียนกฎใหม่ ^/(.*).ks(.*) http://localhost:8080/$1.ks$2 [L,P]
RewriteRule ^/(.*).hip(.*) http://localhost:8080/$1.hip$2 [L,P]
RewriteRule ^/(.*).pih(.*) http://localhost:8080/$1.pih$2 [P]
หากต้องการ คุณสามารถตั้งค่าคำขอทั้งหมดสำหรับไฟล์ใดไฟล์หนึ่งที่จะส่งต่อไปยัง Karrigell ได้ในบทความนี้ เราจะใช้เส้นทาง testarea ดังนั้นเราจึงตั้งค่า httpd.conf ดังนี้:
RewriteEngine On
RewriteRule ^/testarea(.*) http://localhost:8080/testarea$1 [P]
แน่นอนคุณสามารถทำได้:
RewriteEngine On
เขียนกฎใหม่ ^/testarea/(.*).py(.*)
http://localhost:8080/testarea/$1.py$2 [L,P]
เขียนกฎใหม่ ^/testarea/(.*).ks(.*)
http://localhost:8080/testarea/$1.ks$2 [L,P]
เขียนใหม่กฎ ^/testarea/(.*).hip(.*)
http://localhost:8080/testarea/$1.hip$2 [L,P]
เขียนกฎใหม่ ^/testarea/(.*).pih(.*)
http://localhost:8080/testarea/$1.pih$2 [P]
สคริปต์และบริการ
สคริปต์ Python และบริการ Karrigell จะเป็นสองแนวคิดที่นักพัฒนา python เข้าถึงได้มากที่สุดโดยใช้สคริปต์ Karrigell สคริปต์ Python คือสคริปต์ python และนักพัฒนาใช้คำสั่งการพิมพ์ ส่งออกเนื้อหาไปยังเบราว์เซอร์ของผู้ใช้ หากคุณยังไม่เข้าใจ ให้สร้างไดเร็กทอรี testarea จากนั้นเราจะเริ่มสร้างสคริปต์ Python แรกของเรา สร้างไฟล์ใหม่ test.py:
print "<center>"
พิมพ์ "สวัสดี!"
พิมพ์ "<br /><br />"
พิมพ์ "Karrigell ได้รับการกำหนดค่าและใช้งานได้"
print "</center>"
เปิดไฟล์นี้ในเบราว์เซอร์ หาก Karrigell ของคุณได้รับการตั้งค่าอย่างถูกต้องมาก่อน คุณจะเห็นผลลัพธ์
สคริปต์ Python ยังสามารถใช้แบบฟอร์มได้อย่างง่ายดาย มาสร้างเพจง่ายๆ ที่ผู้ใช้สามารถป้อนชื่อของตนเองได้ สร้างไฟล์ asskname.py:
if QUERY.has_key ( "name" ):
พิมพ์ "ชื่อของคุณคือ", _name + "."
อื่น:
พิมพ์ "คุณชื่ออะไร?<br />"
พิมพ์ "<แบบฟอร์ม>"
พิมพ์ "<input type='text' name='name' /><br />"
พิมพ์ "<input type='submit' value='Proceed' />"
พิมพ์ "</form>"
บริการ Karrigell ถูกเขียนคล้ายกับสคริปต์ Python จุดประสงค์นี้คือเพื่อแมปคำขอกับวิธีที่ผู้ใช้ระบุ ชื่อของวิธีการที่ระบุจะถูกส่งต่อหลังจากบริการ Karrigell ตัวอย่างเช่น URL ต่อไปนี้จะ call test เมธอดนี้
http://localhost/testarea/test.ks/test
ช่วยให้เราสามารถเขียนตัวอย่างนี้ได้
def index():
พิมพ์ "ฟังก์ชันดัชนี"
การทดสอบ Def ():
พิมพ์ "ฟังก์ชันทดสอบ"
หากคุณใช้สคริปต์ Python เหล่านี้โดยไม่ผ่านชื่อวิธี โปรแกรมของคุณจะดำเนินการวิธีดัชนีตามค่าเริ่มต้น หากผ่านการทดสอบชื่อวิธี วิธีการทดสอบจะถูกเรียกวิธีการที่ไม่มีอยู่ จะโยนผิดปกติ.
นอกจากนี้ยังง่ายต่อการใช้บริการ Karrigell เพื่อจัดการข้อมูลที่ส่งผ่านในรูปแบบต่างๆ มาสร้าง
ดัชนี ascname.ks def ():
พิมพ์ "คุณชื่ออะไร?<br />"
พิมพ์ "<form action='nameSubmit'>"
พิมพ์ "<input type='text' name='name' /><br />"
พิมพ์ "<input type='submit' value='Proceed' />"
พิมพ์ "</แบบฟอร์ม>"
def nameSubmit ( ชื่อ ):
พิมพ์ "ชื่อของคุณคือ" ชื่อ + "
แน่นอนว่าการอนุญาตให้บุคคลภายนอกเข้าถึงวิธีการของคุณเป็นสิ่งที่อันตรายมาก เพื่อป้องกันไม่ให้ผู้ใช้ที่ไม่ได้รับอนุญาตเข้าถึงวิธีการของคุณ ให้เติมคำนำหน้าวิธีการของคุณตามที่อธิบายไว้ด้านล่าง :
def _private():
การส่ง
ผ่านวิธี _private จะทำให้เกิดข้อยกเว้น
การใช้ HIP
ใน Askname.py มีสิ่งหนึ่งที่ควรสังเกตคือ รหัสนี้มีคำสั่ง print หากสามารถส่งออกได้โดยตรงโดยไม่ต้องใช้ print จะดีมาก โชคดีที่ Karrigell มีฟังก์ชันดังกล่าว ซึ่งเรียกว่า HTML Inside Python และจะล้างคำสั่งการพิมพ์ที่น่ารังเกียจทั้งหมด และการแปลงจาก Askname.py เป็น TML Inside Python ก็ง่ายมากเช่นกัน ลบการพิมพ์ใน Askname.py และเปลี่ยนชื่อไฟล์เป็น Askname.hip
f QUERY.has_key ( "name" ):
"ชื่อของคุณคือ", _name + ""
อื่น:
"คุณชื่ออะไร?<br />"
"<รูปแบบวิธีการ='POST'>"
"<input type='text' name='name' /><br />"
"<input type='submit' value='Proceed' />"
"</form>"
นี่คือ HTML Inside Python Karrigell จะตรวจสอบไฟล์ของคุณและเพิ่มการพิมพ์โดยอัตโนมัติเมื่อจำเป็น HTML Inside Python เป็นข้อพิสูจน์ว่า Karrigell นั้นเรียนรู้ได้ง่าย
เพียง
ใด
โดยปกติแล้ว Inside Python จะจัดเตรียม Python Inside HTML ไว้ตามปกติ ให้เขียนคำสั่ง python ในแท็กพิเศษ จากนั้นจึงส่งผลสุดท้ายไปยังเบราว์เซอร์ของผู้ใช้ มาสร้างตัวอย่างง่ายๆ กันดีกว่า Random.pih
<% import Random %>
หมายเลขสุ่ม: <b><% print Random.random() %></b>
อย่างที่คุณเห็น แนวคิดของ Python Inside HTML นั้นเรียบง่ายมาก ที่จริงแล้ว บล็อกโค้ดอาจง่ายกว่านี้อีก:
<%= Random .random() %>
แต่ถ้าคุณกำลังเผชิญกับตรรกะที่ซับซ้อนมากขึ้น เช่น การประมวลผลข้อมูลในแบบฟอร์ม ก็สามารถประมวลผลได้เหมือนกับที่ประมวลผลในสคริปต์ Python นี่คือแบบจำลองของ Askname.py Askname.pih
<% ถ้า QUERY.has_key ( "ชื่อ" ): %>
ชื่อของคุณคือ <%= _name %>
<% สิ้นสุด %>
<% อื่น ๆ: %>
คุณชื่ออะไร?<br />
<รูปแบบวิธีการ='POST'>
<input type='text' name='name' /><br />
<input type='submit' value='Proceed' />
</แบบฟอร์ม>
<% end %>
โปรดสังเกตการใช้ <% end %> ซึ่งจะเป็นจุดสิ้นสุดของบล็อกโค้ด เช่นเดียวกับการเยื้องคำสั่งแบบมีเงื่อนไขด้านบน
ระบุ
การเยื้องรหัส
<% ถ้า QUERY.has_key ( "ชื่อ" ): %>
ชื่อของคุณคือ <%= _name %>
<% อื่น ๆ: %>
คุณชื่ออะไร?<br />
<รูปแบบวิธีการ='POST'>
<input type='text' name='name' /><br />
<input type='submit' value='Proceed' />
</แบบฟอร์ม>
</เยื้อง>
มาลองใช้
คุณสมบัติเพิ่มเติม
เช่นนี้กันดีกว่า แท็กสามารถใช้ผ่านสคริปต์ Python, tagtest.py
rom HTMLTags import *
print CENTER ( B ( "Test." ) )
เซสชั่นสามารถประมวลผลได้ใน Karrigell และ Karrigell ยังมีกลไกเซสชั่นที่ดีใกล้เคียงกับเชิงวัตถุ ให้เราสร้างโค้ดง่ายๆ เพื่อสาธิตในเซสชั่น Karrigell กลับไปที่ตัวอย่างแรกของเรา ผู้ใช้จะได้รับหมายเลขนำโชค หากผู้ใช้รีเฟรชหน้า หมายเลขจะยังคงอยู่เนื่องจากหมายเลขจะถูกบันทึกไว้ในเซสชัน แน่นอนว่าผู้ใช้จะมีตัวเลือกในการ รับหมายเลข Lucky ใหม่โดยปิดเซสซิน สร้างบริการ Karrigell ชื่อ luckynumber.ks และป้อนรหัสต่อไปนี้:
นำเข้า
ผู้ใช้แบบสุ่ม = เซสชัน ()
ดัชนี def ():
ถ้าไม่ใช่ "luckyNumber" ใน dir ( user ):
user.luckyNumber = สุ่ม.randint (0, 20)
พิมพ์ "เลขนำโชคของคุณ:", user.luckyNumber
พิมพ์ "<br /><br />"
พิมพ์ "<a href='reset'>รีเซ็ตหมายเลขนำโชค</a>"
รีเซ็ต Def ():
ผู้ใช้.ปิด()
พิมพ์ "หมายเลขนำโชคของคุณถูกรีเซ็ตแล้ว"
พิมพ์ "<br /><br />"
print "<a href='index'>Back</a>"
สรุป
Karrigell มีสี่วิธีสำหรับการเปิดเว็บ, สคริปต์ Python, บริการ Karrigell, HTML Inside Python และ Python Inside HTML แต่ละวิธีมีลักษณะเฉพาะของตัวเอง ข้อดีทั่วไปอย่างหนึ่ง: ความเรียบง่ายของการใช้งาน Karrigell เปลี่ยนการพัฒนาเว็บให้เป็นสิ่งที่สวยงามและเรียบง่าย ไม่ว่าคุณจะใช้ Karrigell เพียงอย่างเดียวหรือใช้ร่วมกับ apache มันก็ง่ายอย่างน่าประหลาดใจ เพราะไม่ว่าสำหรับผู้เริ่มต้นหรือทหารผ่านศึก Karrigell ก็เป็นตัวเลือกที่ดี .