Server - BYU Computer Science Students Homepage Index

Download Report

Transcript Server - BYU Computer Science Students Homepage Index

Lecture # 29
Python III: Client  Server
Motivation:
How the Internet Works
Static HTML Pages
Server
Client
Display
B
r
o
w
s
e
r
Request
http://CS100.html
Response
CS100.html
A
p
a
c
h
e
CS100.html
HTML files are text files
Motivation:
How the Internet Works
Dynamic Web Pages
Server
Client
Display
B
r
o
w
s
e
r
Request
http://CS100.html
Response
CS100.html
A
p
a
c
h
e
CS100.cgi
CS100.html
HTML files are text files
Lab 9
Create
Client
1
Create & Set Up
an HTML File
Server
Lab 9
Create
Client
1
Create & Set Up
an HTML File
2
Add CSS style
or formatting
Server
Lab 9
Create
Server
Client
1
Create & Set Up
an HTML File
2
Add CSS style
or formatting
3
Add the python,
.cgi to make it
go
Lab 9
Create
Server
Client
1
Create & Set Up
an HTML File
2
Add CSS style
or formatting
Hook it up
3
4
Add the python,
.cgi to make it
go
Lab 9: Part 1: Server Side
1. Set up an HTML file
2. Add “style” or formatting (CSS)
3. Add the python (.cgi) to make it go
(Server 1 and Server 2)
Lab 9: Step A
• Go to your account:
• The go to
Public_html
myServer
Create folder  convertExample
Lab 9: Steps B & C
• Copy the file “Convert_HTML_Only.html”
into the folder and view the page source
Lab 9: Step D
• Copy the file “Convert_With_CSS.html”
into the folder and view the page source
Lab 9: Step E
• Rename “Convert_With_CSS.html” to “Convert.html”
• Edit “Convert.html” as follows:
Change <form name="demo" action=""> to
<form name="demo" action=
"http://students.cs.byu.edu/~xxxxxx/myServer/Convert.cgi">
where xxxxxx = your account id
• Change "blankFahrenheit()" value=""
to "blankFahrenheit()" value="%celsius%"
and "blankCelsius()" value=""
to "blankCelsius()" value="%fahrenheit%"
Lab 9: Step F, Part I – Create the
Convert Program “Convert.cgi” in Python
#!/usr/bin/env python
import cgi, cgitb
cgitb.enable()
def celsiusToFahrenheit(celsius):
fahrenheit = celsius * 9.0 / 5.0 + 32.0
result = round(fahrenheit, 0)
return result
…. <See Lab Assignment #9 web page for all of the .cgi program>
….
result = result.replace("%celsius%", celsiusValue)
result = result.replace("%fahrenheit%", fahrenheitValue)
print result
Lab 9: Step F, Part II – Copy “Convert.cgi”
onto the Unix Server and make it Executable
• See instructions on the assignment web page
• You should now have the following set up:
Client
Server
Convert.html
(with the CSS
formatting)
Convert.cgi
Lab 9: Step G – Link to Homepage
•Make sure that this part of the lab can be viewed from
http://students.cs.byu.edu/~yourUsername.
Server
Client
Hook it up
Convert.html
(with the CSS
formatting)
Convert.cgi
Static and Dynamic Page Demo
Static Web Page
first.html
<html>
<head>
</head>
<body>
Hi there
</body>
</html>
Dynamic Web Page
first.cgi
print #!/usr/bin/python
print "Content-type: text\html"
print
print “””
<html>
<head>
<head>
<body>
Hi there
<body>
<html>
“””
Lab 9: Part 2: Client Side
Lab 9: Part 2, Step 1
Create a First Version of the HTML File for the
"My Family History" Web Page. (See instruction
in Lab Assignment)
Lab 9: Part 2, Step 2
Create a CGI File that will display this HTML
file. (See instruction in Lab Assignment)
Lab 9: Part 2, Step 3
Link it up. (See instruction in Lab Assignment)
Server
Client
Link it up
My Family
History.html
MFH.cgi
Lab 9: Part 3: CSS
Lab 9: Part 3
We are now going to add style information to the
html file so that the final product will look like this
(See instruction in Lab Assignment)
Testing Static and
Dynamic Web Pages
• Create a directory called server
– You can name it whatever you want
• Save the following file
http://students.cs.byu.edu/~cs100ta/code/server.py
in the directory called server
• include any files you want to test in the same directory as server.py
(or in a subdirectory)
• make a directory “cgi-bin” in the same directory as “server.py”
– Include any cgi files in this directory that you want to test
• execute “python server.py”
• On the command line of your browser invoke your test files as
follows:
– http://localhost:8000/test.html
– http://localhost:8000/cgi-bin/first.cgi
• DEMO
More about Python
String Encodings
• ASCII
– special characters:
\n = Linefeed
\r = Carriage return
\t = Horizontal Tab
• Unicode
– u”…..”
Accessing Substrings
• str[i]
• len(str)
• slices
–
–
–
–
str[n:m]
str[:m]
str[n:]
str[:]
– getting the ith character in str
– returns the length of the str
– str[n] through str[m-1]
– str[0] through str[m-1]
– str[n] through str[len(str)-1]
– str[0] through str[len(str)-1]
• The entire string
– str[-1:]
– str[len(str)-1] through str[len(str)-1]
• A sequence with 1 character, the last character
– str[:-1]
• Demo
– str[0] through str[len(str)-2]
String Methods
• String methods
– capitalize() – only the first
word in the string
– startswith(prefix) – returns
1 or 0
– endswith(suffix)
– find(str), find(str, start),
find(str, start, end)
• returns -1 if string not found
– rfind variant
– upper(), lower(),
swapcase()
• String methods
– isalpha()
– isdigit()
– replace(string,
replacement)
Importing Modules
• Decomposing a program into parts or modules
• Module is a python file
– Ends in “.py”
• Python file contains methods, variables, and classes
• Forms of import
– import file_name
• Assumes file_name ends in “.py”
• Must use full path name to access member of module
– from file_name import *
– from file_name import x, y, z
– import x as y
Examples
• Form Letter – Program_91.py (and command line)
• changeLittle Example – Program_92.py (and command line)
– use sample.py as first parameter
• findSequence – Program_93.py (and command line)
• replaceAllOccurrences – Program_94.py
– use sample.py again
• Web Scraping – Program_95.py
• titleDirectory – Program_96.py
– setMediaPath to MediaSources
• random – Program_97.py
• random sentences
– Execution of a module from command line
• Program_97a.py
• Program_97b.py
– Including a main routine
• import97a.py
• import97b.py
Built in Python Modules
(The Python library)
• Often used modules
–
–
–
–
–
–
–
os, sys, random
datetime, calendar
calendar
math
zipfile
email
SimpleHTTPServer
• Why use modules
– Save work, why reinvent the wheel?
– Higher quality
• Fewer bugs
• Run faster
• Well documented
Lists
• Literals
– a = [1, 2, 3, 4]
• Access
– a[i]
• for loops
– for i in a:
• Concatenation
– “+” operator
• Lists of lists
– access – a[i][j]
• Methods
–
–
–
–
–
–
append(element)
remove(something)
sort()
reverse()
count()
split(delimeter)
• strings to lists of strings
• Functions
– max(list)
– min(list)
Files
• List of bytes
• Name
• Suffix
– Type of information in file
• Folder or Directory Structure
– Trees
• Trees as lists of lists of lists of …
– Traversing a tree with dot notation
• From root
– Traversing domain names
• students.cs.byu.edu