Django(一)

HTTP协议对于收发消息的格式要求如下图:

 

wsgiref版返回动态的HTML文件

 1 '''
 2 根据访问的不同路径返回不同的内容
 3 实现不同的用户得到不同的HTML页面
 4 '''
 5 
 6 import time
 7 from wsgiref.simple_server import make_server
 8 
 9 
10 def home(url):
11     s = 'this is {} page'.format(url)
12     return bytes(s,encoding='utf8')
13 
14 def index(url):
15     return b'<h1>index page</h1>'
16 
17 def user(url):
18     c_time = str(time.time())
19     with open('user.html','r') as f:
20         data_s = f.read()
21         data_s = data_s.replace('@@xx@@',c_time)  #用时间戳模拟不同的用户访问
22         return bytes(data_s,encoding='utf8')
23 
24 def login(url):
25     with open('login.html','rb') as f:
26         return f.read()
27 
28 url_func = [
29     ('/index/',index),
30     ('/home/',home),
31     ('/user/',user),
32     ('/login/',login),
33 ]
34 
35 def run_server(environ,start_response):
36     '''
37     按照wsgiref的要求定义一个run_server函数
38     :param environ: 跟请求相关的参数
39     :param start_response:
40     :return:
41     '''
42     start_response('200 OK',[('Content-Type','text/html;charset=utf8'),])
43     # print('查看environ参数:',environ)   #查看environ参数
44     url = environ['PATH_INFO']  #拿到用户输入的url
45     print(url)
46 
47     for i in url_func:
48         if url == i[0]:
49             func = i[1]
50             break
51     else:
52         func = None
53 
54     if func:
55         msg = func(url)
56     else:
57         msg = b'<h1>404</h1>'
58     return [msg,]
59 
60 if __name__ == '__main__':
61     httpd = make_server('127.0.0.1',8000,run_server)
62     print(httpd)
63     httpd.serve_forever()

jinja2返回动态的HTML文件

 1 '''
 2 利用jinja2进行路径切割替换
 3 '''
 4 
 5 from wsgiref.simple_server import make_server
 6 from jinja2 import Template
 7 import pymysql
 8 
 9 
10 def home(url):
11     s = 'this is {} page'.format(url)
12     return bytes(s,encoding='utf8')
13 
14 def index(url):
15     return b'<h1>index page</h1>'
16 
17 def user(url):
18     conn = pymysql.connect(
19         host = '127.0.0.1',
20         port = 3306,
21         user = 'root',
22         password = '123456789',
23         database = 'day61',
24         charset = 'utf8',
25     )
26     cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
27     cursor.execute('select * from user')
28     ret = cursor.fetchall()
29     #在页面上显示出来
30     with open('user.html','r',encoding='utf8') as f:
31         data_s = f.read()
32         template = Template(data_s)
33         msg = template.render({'user_list':ret})
34         return bytes(msg,encoding='utf8')
35 
36 
37 def login(url):
38     with open('login1.html','rb') as f:
39         return f.read()
40 
41 url_func = [
42     ('/index/',index),
43     ('/home/',home),
44     ('/user/',user),
45     ('/login/',login),
46 ]
47 
48 def run_server(environ,start_response):
49     '''
50     按照wsgiref的要求定义一个run_server函数
51     :param environ: 跟请求相关的参数
52     :param start_response:
53     :return:
54     '''
55     start_response('200 OK',[('Content-Type','text/html;charset=utf8'),])
56     # print('查看environ参数:',environ)   #查看environ参数
57     url = environ['PATH_INFO']  #拿到用户输入的url
58     # print(url)
59 
60     for i in url_func:
61         if url == i[0]:
62             func = i[1]
63             break
64     else:
65         func = None
66 
67     if func:
68         msg = func(url)
69     else:
70         msg = b'<h1>404</h1>'
71     return [msg,]
72 
73 if __name__ == '__main__':
74     httpd = make_server('127.0.0.1',8000,run_server)
75     # print(httpd)
76     httpd.serve_forever()

Django命令行创建方式:

django-admin startproject mysite

Django基础重要的3个要素

from django.shortcuts import HttpResponse, render, redirect

 

posted @ 2018-06-11 19:33  似水年华梦  阅读(179)  评论(0编辑  收藏  举报