zoukankan      html  css  js  c++  java
  • Django--初识

        Django的使用,主要是提供了一个服务器的接口,这样我们的后端和前端就可以通过这个接口来进行交互。如果我们自己来写一个web服务器框架的话,是这样的:

     1 import socket
     2 
     3 sk = socket.socket()
     4 sk.bind(("127.0.0.1", 8080))
     5 sk.listen(5)
     6 
     7 def login():
     8     with open("login.html", encoding="utf-8") as f:
     9         data = f.read()
    10     import time
    11     time_s = str(time.time())
    12     data_new = data.replace("@@xx@@", time_s)
    13     return data_new
    14 
    15 def index():
    16     with open("index.html", encoding="utf-8") as f:
    17         data = f.read()
    18     # 链接数据库,找数据
    19     import pymysql
    20     conn = pymysql.connect(host="127.0.0.1", port=3306, user="root", passwd="", db="day48", charset="utf-8")
    21     cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    22     cursor.execute("select id, name, balance from user")
    23     user_list = cursor.fetchall()
    24     cursor.close()
    25     conn.close()
    26     """
    27     <tr>
    28         <td>id</td>
    29         <td>name</td>
    30         <td>balance</td>
    31     </tr>
    32     """
    33     ret = ""
    34     for i in user_list:
    35         ret +=  """
    36             <tr>
    37                 <td>{0}</td>
    38                 <td>{1}</td>
    39                 <td>{2}</td>
    40             </tr>
    41         """.format(i["id"], i["name"], i["balance"])
    42     data_new = data.replace("@@xx@@", ret)
    43     return data_new
    44 
    45 
    46 def info():
    47     return "这是个人信息页"
    48 
    49 
    50 url_func_map = [
    51     ("/login/", login),
    52     ("/index/", index),
    53     ("/info/", info)
    54 ]
    55 
    56 
    57 while True:
    58     conn, addr = sk.accept()  # 夯在此地,等待链接
    59     data = conn.recv(8096)
    60     # 类型转换 字节类型-->字符串
    61     data_str = str(data, encoding="utf-8")
    62     # 取到请求头
    63     header = data_str.split("
    
    ")[0]
    64     # 再取到 “GET / HTTP/1.165     tmp = header.split("
    ")[0]
    66     # 再按照空格分割,得到列表,取索引值是1的
    67     url = tmp.split(" ")[1]
    68     conn.send(b"HTTP/1.1 200 OK
    Content-Type: text/html; charset=utf-8
    
    ")  # 响应头
    69     # 根据请求URL的不同,我返回不同的内容
    70     func_name = None  # 定义一个存放将要执行函数的变量
    71     # for循环url_func_map
    72     for i in url_func_map:
    73         if i[0]  == url:
    74             func_name = i[1]
    75             break
    76     if func_name:
    77         response = func_name()
    78     else:
    79         response = "404"
    80     conn.send(bytes(response, encoding="utf-8"))  # 响应体
    81     conn.close()
    自己写web服务器框架

       但是我们启用了Django来进行一个项目的话,就可以直接借用Django的服务器接口

        很简单,创建Django项目:

         开启服务器:

        这样我们就开启了一个Django的服务器

        我们所创建的Django项目中,分为几个文件夹和py文件

        settings.py中存放的是配置文件

        配置文件里面需要做的设置:
                1. templates
                

                TEMPLATES = [
                    {
                        'BACKEND': 'django.template.backends.django.DjangoTemplates',
                        'DIRS': [],   # 在这里进行设置
                        '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',
                            ],
                        },
                    },
                ]


                
                2. 中间件需要注释一个(如果前端对csrf进行了处理就不用)
               

    MIDDLEWARE = [
                'django.middleware.security.SecurityMiddleware',
                'django.contrib.sessions.middleware.SessionMiddleware',
                'django.middleware.common.CommonMiddleware',
                # 'django.middleware.csrf.CsrfViewMiddleware',
                'django.contrib.auth.middleware.AuthenticationMiddleware',
                'django.contrib.messages.middleware.MessageMiddleware',
                'django.middleware.clickjacking.XFrameOptionsMiddleware',
            ]


            
            3. 静态文件设置
               

    STATIC_URL = '/static/'
                STATICFILES_DIRS = (
                    os.path.join(BASE_DIR, "ss"),  # 静态文件存放位置
                    
                )

        主程序代码写在url里面,当然,可以新建其他py文件来区分模块代码

        template文件夹下存放html文件,可以改名,在配置文件中修改

        静态文件设置的文件夹下存放渲染文件,js和css等

        Django项目中,我们需要用模板语言在html中进行数据的展示:

                 {% for i in xx %}
            
                  {{ i }}
    
                  {% emty %}
    
                     //存放没有值执行的
              {% endfor %}
    
                  同时模块也支持if判断

        Django前端与后端的交互中,后端发送消息与接受消息的方式:

              1. request  代表了所有请求相关的内容
             

    1. request.method
              2. request.POST.get("xxx")


            
          2. 新手三件套:
            

     from django.shortcuts import HttpResponse, render, redirect
                  1. HttpResponse()
                  2. render 渲染
                      1. render(request, "xx.html")
                      2. render(request, "xx.html", {"num": 123})
                  3. redirect()  跳转到xx
  • 相关阅读:
    通用Excel导入工具V1.0使用说明
    RDIFramework.NET — 基于.NET的快速信息化系统开发框架 5.4平台日志、异常管理、生成自动升级配置文件模块
    .NET快速开发整合框架(RDIFramework.NET)【开发实例】之产品管理(WinForm)
    RDIFramework.NET ━ .NET快速信息化系统开发框架 4.11 角色权限管理模块
    RDIFramework.NET ━ .NET快速信息化系统开发框架 4.8 模块(菜单)管理
    RDIFramework.NET — 基于.NET的快速信息化系统开发框架 5.1 数据字典管理模块
    RDIFramework.NET ━ .NET快速信息化系统开发框架 4.10 用户权限管理模块
    RDIFramework.NET ━ .NET快速信息化系统开发框架 4.9 操作(功能)权限管理模块
    推荐+1置顶+1(分享、讨论、实现)通用软件注册功能之建立有效的软件保护机制
    RDIFramework.NET ━ .NET快速信息化系统开发框架4.7 组织机构管理模块
  • 原文地址:https://www.cnblogs.com/gaoshengyue/p/7929169.html
Copyright © 2011-2022 走看看