พัฒนาเว็บแอพลิเคชันด้วย Django

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
Suphot Sawattiwong Function ใน C# Suphot Sawattiwong
Advertisements

บทที่ 2 รหัสควบคุมและการคำนวณ
Introduction to C Introduction to C.
โครงสร้างโปรแกรมภาษา C
เรียนรู้และเข้าใจ HTML อย่างง่าย
ระบบคลังสินค้านม Milk Warehouse System ผู้จัดทำ
Introduction to C Programming
การเขียน Webpage ด้วย HTML
ครั้งที่ 8 Function.
การรับค่าและแสดงผล.
FORM อ.กันทิมา อ่อนละออ
Script Programming& Internet Programming
Lecture No. 3 ทบทวนทฤษฎีและแบบฝึกหัด
เอกสารประกอบการบรรยาย เรื่อง ASP Objects
วิชา การเขียนโปรแกรมบนเว็บ (Web-based Programming)
วิชา การเขียนโปรแกรมบนเว็บ (Web-based Programming)
HTML เอกสารประกอบการบรรยายรายวิชา Browser-Based Application Development.
การส่งค่าและการเก็บค่า (ต่อ... )
ภาควิชาวิทยาการคอมพิวเตอร์และเทคโนโลยีสารสนเทศ
การจัดการเอกสารด้วยไลบรารี
HTTP Client-Server.
World Wide Web WWW.
การสร้าง Web Page จาก Wizard
Request Object.
C Programming Lecture no. 6: Function.
SCC : Suthida Chaichomchuen
– Web Programming and Web Database
การติดตั้ง AppServ
PHP with Form ฟอร์ม คือหน้าจอที่ใช้เป็นสื่อกลางในการติดต่อระหว่างผู้ใช้เว็บไซต์ กับ เจ้าของเว็บไซต์ โดยผู้ใช้สามารถกรอกข้อมูลผ่านฟอร์มส่งไปยังเซอร์เวอร์
Electronic Commerce เว็บฟอร์ม (Web Form).
การจัดการเวอร์ชันด้วย Mercurial
ปฏิบัติการเกี่ยวกับวิศวกรรมคอมพิวเตอร์ ( )
การสร้างวงจรต้นแบบ (Circuit Prototyping)
PHP.
เครื่องนักศึกษา  c:\appserv\www\ชื่อนักศึกษา\ชื่อไฟล์.php
การสร้างช่องรับข้อมูล
Page: 1 การพัฒนาโปรแกรมประยุกต์บนเว็บ อ. บุรินทร์ รุจจนพันธุ์.. ปรับปรุง 12 กรกฎาคม 2550 HTML (HyperText Markup Language)
โปรแกรมคำนวณค่าไซน์ (Sine)
โปรแกรมการคำนวณพื้นที่สามเหลี่ยมมุมฉาก
คำสั่งแสดงผลในภาษา PHP
HTML, PHP.
ผศ. พิเชษฐ์ ศิริรัตนไพศาลกุล
วิชาคอมพิวเตอร์กราฟิก intro_vb_net_06 การสร้างกราฟเส้นตรงด้วย VB.NET
วิชาคอมพิวเตอร์กราฟิก
ทบทวน กันก่อน .....กระบวนการแปลโปรแกรม
Week 2 Variables.
เสรี ชิโนดม ฟังก์ชัน เสรี ชิโนดม
Computer Programming for Engineers
2 /* ข้อความนี้เป็นเพียงคำอธิบาย ไม่มีผลต่อขั้นตอนการ ทำงานของโปรแกรม */ /* A simple program to display a line of text */ #include void main ( ) { printf.
โปรแกรม Microsoft Access
การเขียนโปรแกรม PHP เชื่อมต่อกับ MySQL
วิทยา กรระสี (วท.บ. วิทยาการคอมพิวเตอร์)
PHP for Web Programming
ฟังก์ชัน.
CHAPTER 12 FORM.
13 October 1. Information and Communication Technology Lab 8 Web Browser and Seach Engine โดย ผู้ช่วยศาสตราจารย์วิชัย.
คำสั่งเกี่ยวกับการรับ และแสดงผล
CHAPTER 7 String Functions and Regular Expression
1 ซอฟท์แวร์ที่ น่าสนใจ จัดทำโดย นางสาวรัชดา ณรงค์ ns B06.
Uniform Resource Location ( URL)
การสร้างฟอร์ม(Form) ด้วยภาษา HTML
เอกสารประกอบการบรรยาย เรื่อง การเขียน Home page ด้วย HTML (2) ตอน... การใช้ FORM โดย ผู้ช่วยศาสตราจารย์วิชัย บุญเจือ
PHP : [1] PHP เบื้องต้น. PHP คืออะไร ? PHP ได้รับการเผยแพร่เป็นครั้ง แรกในปี ค. ศ โดย Rasmus Lerdorf ต่อมาได้มีนัก โปรแกรมเมอร์เข้ามาช่วยในการ พัฒนาต่อมาตามลำดับ.
การรับข้อมูลใน ภาษา php ศูนย์คอมพิวเตอร์โรงเรียนปลวกแดงพิทยาคม.
การกระทำทางคณิตศาสตร์
PHP. P ersonal H ome P age P rofessional H ome P age PHP : H ypertext P reprocessor.
PHP เบื้องต้น.
1 Functions กนกวรรธน์ เซี่ยงเจ็น สำนักวิชาเทคโนโลยีสารสนเทศ และการสื่อสาร มหาวิทยาลัยนเรศวร พะเยา.
stack #1 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
สำนักวิชาเทคโนโลยีสารสนเทศและการสื่อสาร มหาวิทยาลัยนเรศวร พะเยา
ใบสำเนางานนำเสนอ:

พัฒนาเว็บแอพลิเคชันด้วย Django ปฏิบัติการเกี่ยวกับวิศวกรรมคอมพิวเตอร์ (01204223) ผศ.ดร.ชัยพร ใจแก้ว ภาควิชาวิศวกรรมคอมพิวเตอร์ คณะวิศวกรรมศาสตร์ มหาวิทยาลัยเกษตรศาสตร์

แนะนำ Django เฟรมเวิร์คสำหรับสร้างเว็บแอพลิเคชัน "The Web Framework for Perfectionists with Deadlines" เฟรมเวิร์คสำหรับสร้างเว็บแอพลิเคชัน พัฒนาด้วยภาษาไพธอน 2.x (ยังไม่รองรับ 3.x) ตัวอย่างเว็บที่สร้างด้วย Django Washington Post (http://www.washingtonpost.com) Guadian.co.uk E-Labsheet (http://cloud3.cpe.ku.ac.th/elab)

เอกสาร HTML ประกอบด้วยข้อความและแท็ก (Tag) ช่องว่างที่มากกว่าหนึ่งช่องและการขึ้นบรรทัดใหม่ไม่มีผลต่อเอกสาร เปิดแท็ก ปิดแท็ก <html> <head> <title>Example</title> </head> <body> <h1>Hello</h1> Welcome to my homepage. </body> </html> ไฟล์ html ผลลัพธ์บนบราวเซอร์ <html><head><title>Example</title></head> <body><h1>Hello</h1>Welcome to my homepage.</body></html>

การตอบสนองคำร้องขอใน Django http://mysite.com/path/to/1/2 Client (Web browser) Response Request Server (Web App) Models <app>/models.py Database Views <app>/views.py URL resolver urls.py Templates templates/*.html

สร้างโปรเจ็คใหม่ สร้างโปรเจ็คชื่อ myweb ภายในโปรเจ็ค myweb สร้างแอพฯ ชื่อ shape หมายเหตุ: ภายในหนึ่งโปรเจ็คมีได้หลายแอพลิเคชัน $ django-admin startproject myweb $ cd myweb $ ./manage.py startapp shape

ระบุแอพฯ ที่ต้องการใช้งาน แก้ไขไฟล์ settings.py โดยเพิ่ม shape เข้าไปในรายการแอพลิเคชันที่ใช้ : INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'shape', # Uncomment the next line to enable the admin: # 'django.contrib.admin', # Uncomment the next line to enable admin documentation: # 'django.contrib.admindocs', ) (settings.py)

สร้างวิวแรก สร้างวิวชื่อ index ใน shape/views.py หมายเหตุ: ทุกวิวฟังก์ชันจะต้องรับ request เป็นอาร์กิวเมนต์แรกเสมอ from django.http import HttpResponse def index(request): return HttpResponse('Hello') (shape/views.py)

กำหนดวิวให้รูทพาธ (/) ระบุให้พาธ / ถูกส่งไปประมวลผลโดยวิว index โดยแก้ไขไฟล์ urls.py from django.conf.urls.defaults import * # Uncomment the next two lines to enable the admin: # from django.contrib import admin # admin.autodiscover() urlpatterns = patterns('', url(r'^$', 'shape.views.index'), # Example: # (r'^first/', include('first.foo.urls')), # Uncomment the admin/doc line below to enable admin documentation: # (r'^admin/doc/', include('django.contrib.admindocs.urls')), # Uncomment the next line to enable the admin: # (r'^admin/', include(admin.site.urls)), ) regular expression (urls.py)

ทดสอบแอพลิเคชัน รันเว็บเซิร์ฟเวอร์ผ่าน manage.py กรอก http://127.0.0.1:8000/ ลงในช่อง Location ของเว็บบราวเซอร์ หรือพิมพ์ http://0:8000 ก็ได้เช่นกัน $ ./manage.py runserver Validating models... 0 errors found Django version 1.2.5, using settings 'myweb.settings' Development server is running at http://127.0.0.1:8000/ Quit the server with CONTROL-C.

เทมเพลท สำหรับเอกสารที่ซับซ้อน การสร้างอ็อบเจ็กต์ HttpResponse โดยตรงจากวิวเป็นเรื่องยุ่งยาก ต้องสั่งพิมพ์ tag ต่าง ๆ เอาเอง Django มีทางลัดในการสร้าง HttpResponse จาก "เทมเพลท" (Template) ที่เตรียมไว้ล่วงหน้า เทมเพลทมีลักษณะเหมือนเอกสาร HTML ให้ Web Designer เป็นผู้สร้างให้ ไม่ใช่โปรแกรมเมอร์ สร้างได้สะดวกโดยอาศัยซอฟต์แวร์ประเภท HTML Editor เช่น DreamWeaver, Kompozer

สร้างเทมเพลท index.html เตรียมไดเรคตอรีให้เทมเพลท สร้างเอกสาร templates/index.html ดังแสดง (ใช้โปรแกรม Kompozer หรือซอฟต์แวร์ HTML Editor ใดก็ได้) $ mkdir templates (templates/index.html) ใช้รูปแบบ H1 สร้างลิ้งค์ไปที่ shape/rectangle/, shape/circle/ และ shape/triangle/ ตามลำดับ ใส่ชื่อตัวเอง Horizontal Bar

กำหนดที่เก็บเทมเพลท แก้ไขไฟล์ settings.py เพื่อระบุที่อยู่ของเทมเพลท import os PROJECT_DIR = os.path.dirname(__file__) : TEMPLATE_DIRS = ( os.path.join(PROJECT_DIR, 'templates'), ) (settings.py)

เรียกใช้งานเทมเพลทจากวิว แก้ไขฟังก์ชัน index ใน shape/views.py ใช้ทางลัด render_to_response สร้างอ็อบเจ็กต์ HttpResponse จากเทมเพลท รีโหลดหน้าเว็บเพื่อดูความถูกต้อง from django.http import HttpResponse from django.shortcuts import render_to_response def index(request): return render_to_response('index.html') (shape/views.py)

HTML Form เอกสาร HTML สามารถบรรจุฟอร์มเพื่อรับข้อมูลจากผู้ใช้

กำหนดวิวให้พาธ /shape/rectangle เพิ่ม URL mapping ใน urls.py from django.conf.urls.defaults import * # Uncomment the next two lines to enable the admin: # from django.contrib import admin # admin.autodiscover() urlpatterns = patterns('', url(r'^$', 'shape.views.index'), url(r'^shape/rectangle/$', 'shape.views.rectangle_form'), # Example: # (r'^first/', include('first.foo.urls')), # Uncomment the admin/doc line below to enable admin documentation: # (r'^admin/doc/', include('django.contrib.admindocs.urls')), # Uncomment the next line to enable the admin: # (r'^admin/', include(admin.site.urls)), ) (urls.py)

สร้างวิว rectangle_form เพิ่มฟังก์ชันลงไปใน views.py def rectangle_form(request): return render_to_response('rectangle.html') (shape/views.py)

สร้างฟอร์ม rectangle.html เป็นเทมเพลท พาธที่แสดงฟอร์มนี้คือ /shape/rectangle/ การระบุ Action เป็น calculate ทำให้การกด Submit ส่งข้อมูลไปยังพาธ /shape/rectangle/calculate ชื่อ: width ชื่อ: height

เตรียมเทมเพลทแสดงผลคำนวณ เราจะออกแบบให้ใช้เทมเพลทและวิวเดียวกันสำหรับการคำนวณเกี่ยวกับสี่เหลี่ยม วงกลม สามเหลี่ยม ฯลฯ สร้างเทมเพลทชื่อ result.html ดังนี้ ระบุตำแหน่งที่ให้วิวส่งค่ามาแสดงผล (templates/result.html)

สร้างวิวสำหรับคำนวณ เพิ่มฟังก์ชันใน views.py รับอาร์กิวเมนต์ระบุชนิดของรูปทรง def calculate(request, shape_type): if shape_type == 'rectangle': w = float(request.POST['width']) h = float(request.POST['height']) circum = 2*(w+h) area = w*h return render_to_response('result.html', { 'area' : area, 'circum' : circum }) (shape/views.py) ค่าเหล่านี้จะถูกแทนที่ในเทมเพลท

ข้อความส่วนนี้จะถูกส่งไปเป็นอาร์กิวเมนต์ของวิว กำหนดวิวให้พาธ เราจะให้พาธต่อไปนี้ถูกส่งไปวิวเดียวกัน /shape/rectangle/calculate /shape/circle/calculate /shape/triangle/calculate ระบุนิพจน์เรกูลาร์ใน urls.py urlpatterns = patterns('', url(r'^$', 'shape.views.index'), url(r'^shape/rectangle/$', 'shape.views.rectangle_form'), url(r'^shape/(.*)/calculate$', 'shape.views.calculate'), ) (urls.py) ข้อความส่วนนี้จะถูกส่งไปเป็นอาร์กิวเมนต์ของวิว

ระงับการใช้ CSRF Protection Django มีระบบป้องกัน Cross-Site Request Forgery (CSRF) ให้กับทุกวิวที่รับข้อมูลจากฟอร์ม ในตัวอย่างนี้คือวิว calculate เราจะระงับการใช้งานไปก่อนเพื่อความสะดวก แก้ไข shape/views.py โดยใส่ @csrf_except decorator ให้กับ calculate from django.views.decorators.csrf import csrf_exempt : @csrf_exempt def calculate(request, shape_type): (shape/views.py)

แบบฝึกหัด/การบ้าน เพิ่มการคำนวณเกี่ยวกับวงกลมและสามเหลี่ยม วงกลม: รับค่ารัศมี สามเหลี่ยม: รับค่าพิกัดของมุมทั้งสาม