zoukankan      html  css  js  c++  java
  • day61Django

    一、Django

    web 框架本质

    所有的web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端。

    我们访问网址收到的响应信息可以在浏览器调试窗口的network标签中看到

    点击view source之后显示如下图:

    收发消息格式要求

    """
    根据浏览器访问的路径的不同,返回不同的内容
    将不同页面的处理代码封装到函数中
    优化频繁的if判断
    返回具体的HTML文件
    实现不同的用户得到不同的HTML页面

    """

    from wsgiref.simple_server import make_server
    from jinja2 import Template
    import pymsql

    def home(url):
      s='this is {}page!'.format(url)
      return bytes(s,encoding='utf8')
    def index(url):
      return b'<h1>index page</h1>'
    def user(url):
    #从数据库里面找到所有用户信息
    conn = pymysql.connect(
       host='127.0.0.1',
       port=3306,
       user='root',
       password='123',
       database='user',
       charset='utf8')
    cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)
    cursor.execute('select*from user')
    ret=cursor.fetchall()
    print(ret)
    with open('user.html','r',encoding='utf8')as f:
    data_s=f.read()
    template=Template(data_s)
    msg=template.render({"user_list":ret})
    return bytes(msg,encoding='utf8')

    def login(url):
      with open('login.html','rb') as f:
        return f.read()
    url和将要执行的函数的对应关系
    url2func=[
    ("/index",index),
    ("/home/",home),
    ("/user/",user),
    ("/login/",login),
    ]
    按照wsgiref的要求定义一个run_server函数
    def run_server(environ,start_response):
    '''
    :param environ:跟请求相关的参数
    :param start_response:
    :return:

    '''
    #设置HTTP响应的状态码和头信息
    start_response('200 OK',[('Content-Type','text/html;charset=utf8'),])
    url=environ['PATH_INFO']#取到用户输入的url
    func=None
    for i in url2func:
      if url==i[0]:
        func=i[1]
        break
      else:
        func=None
      if func:
        msg=func(url)#执行对应的函数
      else:
        msg=b'<h1>404</h1>'
      return [msg,]

    if _name_=='_main_':
      httpd=make_server('127.0.0.1',8090,run_server)
      http.server_forever()

    二、Django

    要下载带LTS版的可以长期处理BUG

    pip3 install django==1.11

    创建一个django项目:

    django-admin startproject mysite

    mysite/
    ├── manage.py # 管理文件
    └── mysite # 项目目录
    ├── __init__.py
    ├── settings.py # 配置
    ├── urls.py # 路由 --> URL和函数的对应关系
    └── wsgi.py # runserver命令就使用wsgiref模块做简单的web server

    运行Django项目
    python manage.py runserver 127.0.0.1:8000
    模板文件配置:

    TEMPLATES = [
    {
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': [os.path.join(BASE_DIR, "template")], # template文件夹位置
    'APP_DIRS': True,
    'OPTIONS': {
    'context_processors': [
    'django.template.context_processors.debug',
    'django.template.context_processors.request',
    'django.contrib.auth.context_processors.auth',
    'django.contrib.messages.context_processors.messages',
    ],
    }

    静态文件配置

    STATIC_URL = '/static/'  # HTML中使用的静态文件夹前缀
    STATICFILES_DIRS = [
        os.path.join(BASE_DIR, "static"),  # 静态文件存放位置
    ]

    Django基础必备三件套:

    HttpResponse

    内部传入一个字符串参数,返回给浏览器

    def index(request):

    #业务逻辑代码

    return HttpResponse("OK")

    render

    除request参数外还接受一个待渲染的模板文件和一个保存具体数据的字典参数。

    将数据填充进模板文件,最后把结果返回给浏览器。

    def index(request):

    #业务逻辑代码

    return render(request,'index.html',())

     
  • 相关阅读:
    as3.0 网络通信
    flash显示html
    [javascript]对象
    hibernate
    远程服务
    [mysql]笔记1
    [笔记]深入剖析Tomcat-tomcat的默认连接器,servlet容器
    [java]关于访问权限
    [笔记]http权威指南(2)
    [笔记]http权威指南
  • 原文地址:https://www.cnblogs.com/lg04551/p/9167651.html
Copyright © 2011-2022 走看看