• Django框架


    1.Django框架

    版本:1.11

    创建:

      django-admin startproject xxx

      cd xxx

      python manage.py startapp app01

      python manage.py runserver 127.0.0.1:8000

    2.HTTP请求本质

      1.请求生命周期

        - 网站本质:socket

          服务端(网站):

            1.先启动并监听:80端口

            3.获取请求信息:

               获取请求中的url

               根据url在已经写好的路由关系中进行匹配:

                {

                  /login/   login

                  /admin/  admin

                  }

              请求头

              请求体

              处理请求

              响应内容:

          客户端(浏览器)

            http://cnblogs.com/wangmengzhu/

            2.发送请求

              - 连接:www.cnblogs.com:80

              - 发送数据:

                  GET请求:请求体为空,传值在url后边?data

                  POST请求:通过post可以传值

            3.接收响应内容

              响应头悄悄写到浏览器

              响应体在浏览器上显示

    3.Django请求的生命周期

    浏览器---wsgi协议---路由系统---视图函数---ORM

    4.bootstrap实现用户登陆

    5.基于Django的model操作数据库表

    •  创建用户表
    models.py
    class UserInfo(models.Model): id=models.AutoField(primary_key=True) user=models.CharField(max_length=32) pwd=models.CharField(max_length=64)
    settings.py
    INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app01.apps.App01Config',#'app01'
    ]
    SQLlite:
    应用默认操作
    • 执行命令,创建数据库表  

    python manage.py makemigrations

    python manage.py migrate

    #与数据库的类型一一对应
    class UserInfo(models.Model):
        id=models.AutoField(primary_key=True)
        user=models.CharField(max_length=32,null=False,default='11')
        pwd=models.CharField(max_length=64)
    class Department(models.Model):
        id=models.AutoField(primary_key=True)
        title=models.CharField(max_length=32)
    

      

    •  基于model实现数据查询和用户登陆
      def login(request):
          if request.method=='GET':
              #打开login.html文件
              #找到特殊标记{{msg}}
              #并将第三个特殊标识符替换
              #将替换完毕的字符串发送给用户浏览器
              return render(request,'login.html',{'msg':'sajlsa'})
          else:
              username=request.POST.get('username')
              password=request.POST.get('password')
              from app01 import models
              user=models.UserInfo.objects.filter(user=username,pwd=password).first()#表示查询这张表的所有数据
              if user:
                  #在响应头中设置:locating:http://baidu.com无响应体,当作字符串提交给浏览器
                  return redirect('/index/')
              else:
                  return render(request,'login.html',{'msg':'用户名或者密码错误'})
      
      def index(request):
          return redirect('http://www.baidu.com/')
      
      def test(request):
          from app01 import models
          # user_list=models.UserInfo.objects.all()
          # for obj in user_list:
          #     #查询所有用户,相当于select * from userinfo
          #     #每一个obj都是一行数据
          #     print(obj.id)
          #select * from userinfo where user='alex' and pwd=123
          #如果取到多条就是列表,里边有多个对象,取到一条,就是列表,里边有一个对象
          user_list=models.UserInfo.objects.filter(user='alex',pwd='123').all()
          #根据条件取数据库中的第一条数据
          user_list=models.UserInfo.objects.filter(user='alex',pwd='123').first()
          return HttpResponse('...')
      

        

    • 查看部门列表
    • 添加部门
    views.py
    
    def part_add(request):
        """
        添加部门
        :param request:
        :return:
        """
        if request.method=='GET':
            return  render(request,'part_add.html')
        else:
            ti=request.POST.get('title')
            #添加到数据库:models.Department
            models.Department.objects.create(title=ti)
            return redirect('/parts/')
    
    parts_add.html
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <link rel="stylesheet" href="/static/plugins/bootstrap/css/bootstrap.css">
    </head>
    <body>
    
    <div class="container">
        <form method="post">
            <div class="form-group">
                <h1>添加部门</h1>
                <label for="t1">部门名称</label>
                <input  id='t1' type="text" class="form-control" name="title">
            </div>
                <input type="'submit" value="添加" class="btn btn-success">
                <button type="submit" class="btn btn-default">Submit</button>
        </form>
    </div>
    </body>
    </html>
    • 删除部门
    vewis.py
    
    def part_del(request):
        """
        删除部门
        :param request:
        :return:
        """
        nid=request.GET.get('nid')
        #去数据库中将id=nid删除
        models.Department.objects.filter(id=nid).delete()
        return redirect('/parts/')
    

      

    •  编辑部门
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <div class="container">
        <h1>编辑部门</h1>
        <form method="post">
            <div class="form-group">
                <span><label for="t1">部门名称</label></span>
                <input  id='t1' type="text" class="form-control" name="title" value="{{ val }}">
            </div>
                <button type="submit" class="btn btn-default">修改</button>
        </form>
    </div>
    </body>
    </html>  
  • 相关阅读:
    pytorch-卷积基本网络结构-提取网络参数-初始化网络参数
    pytorch-mnist神经网络训练
    python 面对对象 类(继承, 多态)
    注意机制CBAM
    python sqlalchemy 进行 mysql 数据库操作
    python pymysql 连接 mysql数据库进行操作
    mysql数据库基础
    python正则表达式解析(re)
    python 装饰器 (test = submit(test))
    对opencv读取的图片进行像素调整(1080, 1920) 1.cv2.VideoCapture(构造图片读取) 2.cv2.nameWindow(构建视频显示的窗口) 3.cv2.setWindowProperty(设置图片窗口的像素) 4.video_capture(对图片像素进行设置)
  • 原文地址:https://www.cnblogs.com/wangmengzhu/p/8299958.html
Copyright © 2020-2023  润新知