django

Posted 一千万年的雨

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django相关的知识,希望对你有一定的参考价值。

  对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端。

阶段1

socket服务端和客户端都自己编写

实现访问8080端口,返回一个\'hello world\'

#!/usr/bin/env python
#encoding: utf-8
#@2017-03-30
"""最简单的web框架"""
 
import socket

def handle_request(client):
    """应用程序,web开发者自定义部分"""
    buf = client.recv(1024)
    client.send(\'HTTP/1.1 200 OK\\1\\n\\r\\n\')
    client.send("Hello, world!")
    
def server():
    """服务端程序,web开发者共用部分
    本质:对socket进行封装"""
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.bind((\'0.0.0.0\', 8080))
    sock.listen(5)
    
    while True:
        connection, address = sock.accept()
        handle_request(connection) # 阻塞
        connection.close()

if __name__ == \'__main__\':
    server()
View Code

 

阶段2

WSGI(Web Server Gateway Interface)是一种规范,它定义了使用python编写的web app与web server之间接口格式,实现web app与web server间的解耦。python标准库提供的独立WSGI服务器称为wsgiref

实现访问8000端口,返回一个\'hello world\'

#!/usr/bin/env python
#coding:utf-8

# 封装后的服务程序
from wsgiref.simple_server import make_server

def RunServer(environ, start_response):
    start_response(\'200 OK\', [(\'Content-Type\', \'text/html\')])
    return \'Hello, world!\'

if __name__ == \'__main__\':
    httpd = make_server(\'0.0.0.0\', 8000, RunServer)
    print "Serving HTTP on port 8000..."
    httpd.serve_forever()
View Code

 

阶段3

一些功能模块化,逐渐有了django的影子

demo:点击下载

main.py作为程序入口

#!/usr/bin/env python
#coding:utf-8

# 封装后的服务程序
from wsgiref.simple_server import make_server
from urls import url

def RunServer(environ, start_response):
    start_response(\'200 OK\', [(\'Content-Type\', \'text/html\')])
    # 获取用户URL
    user_url = environ[\'PATH_INFO\']
    
    # 根据URL不同返回不同的结果
    for item in url:
        if item[0] == user_url:
            return item[1]()
    else:
        return \'<h1>404 not found</h1>\'

if __name__ == \'__main__\':
    httpd = make_server(\'0.0.0.0\', 8000, RunServer)
    print "Serving HTTP on port 8000..."
    httpd.serve_forever()
View Code

 

views.py方法函数

#!/usr/bin/env python
#coding:utf-8

def index():
    return \'index\'

def login():
    return \'login\'

def logout():
    return \'logout\'

url = (
    (\'/index/\', index),
    (\'/login/\', login),
    (\'/logout/\', logout),
)
View Code

 

url到方法函数的映射urls.py

#encoding: utf-8
from views import *

"""指定URL到处理函数的映射"""
url = (
    (\'/index/\', index),
    (\'/login/\', login),
    (\'/logout/\', logout),
)
View Code

以上是关于django的主要内容,如果未能解决你的问题,请参考以下文章

django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE的解决办法(转)(代码片段

Django REST框架--认证和权限

如何在 Django 中显式重置模板片段缓存?

使用 Django 模板作为片段

python 通过django片段很多很多

JavaScript 片段在 Django 模板中不起作用