• Python学习 Day 058


    主要内容:

    • 1.完整的登录示例
    • 2.APP
    • 3.ORM 的介绍和使用

    1.完整的登录示例

    1.1创建项目

    (1)静态文件的配置

    #STATIC文件还可以配置STATICFILES_DIRS,指定额外的静态文件存储位置。(在settings文件中进行配置)
        #  STATIC_URL的含义与MEDIA_URL类似。
        # ----------------------------------------------------------------------------
        #注意1:
            #为了后端的更改不会影响前端的引入,避免造成前端大量修改
            STATIC_URL = '/static/'               #引用名
            STATICFILES_DIRS = [
                os.path.join(BASE_DIR,"statics")  #实际名 ,即实际文件夹的名字
            ]
            #django对引用名和实际名进行映射,引用时,只能按照引用名来,不能按实际名去找
            #<script src="/statics/jquery-3.1.1.js"></script>
            #------error-----不能直接用,必须用STATIC_URL = '/static/':
            #<script src="/static/jquery-3.1.1.js"></script>
    #注意2:
    因为 STATICFILES_DIRS =[] 是列表所以可以配置多个的静态文件夹,但是创建多个文件夹时,在html文件中引入时,当用实际名
    去引入会报错,但是当用别名去引入,会全部显示, /static/ 是会找所有配置文件中的内容.此外当不同文件夹中有重名文件,在查
    找时会自上而下的查找,只会显示一个

    (2) form 表单使用注意事项

    • action ='''  method =post action提交的地址,method是请求方式
    • input 标签要有那么属性
    • 有一个input 的类型是submit或者 button按钮

    (3) 需要在settings文件中将 MIDDLEWARE中的'django.middleware.csrf.CsrfViewMiddleware' 注释掉就可以提交post 请求

    (4) 提交数据(用户名和密码)

    • GET
      #GET 获取一个页面 #数据会呈现在地址栏
            login/?user =wcx&pwd =123
            在Django中获取数据
                   request.GET{}
                   request.GET['user']
                   requestGET.get('user')
    • POST
      #POST 提交数据 ,数据不可见,在请求体中
      在Django中获取数据
                   request.POST{}
                   request.POST['user']
                   request.POST.get('user')

    2. APP

    2.1 APP的创建

    #1. 命令行:
        python manage.py startapp app名称
                    
    #2. pycharm
        tools -->run manage.py tsak  
        startapp app名

    2.2 注册APP

    当用命令行创建时需要注册

     #在settings文件中的INSTALLED_APPS 添加 
     #'app01'或者 'app01.apps.App01Config'  # 推荐写法

    但是当用pycharm创建项目时候创建了APP则在settings文件中会自动添加

    2.3 APP文件夹下内容

    # APP文件夹下内容
    
    #admin.py  Django提供的管理后台,对表的结构进行增删改查
    #apps.py     与APP相关的内容
    #models.py  与ORM相关
    #test.py
    #views.py  在这里写函数

    modules.py

    #与ORM相关
    from django.db import models
    
    class User(models.Model):
        #在数据库中创建一个表  (但是数据库此时没有)
        name = models.CharField(max_length=32)
        pwd = models.CharField(max_length=32)
        def __stt__(self):
            return self.name

    views.py

    #写函数,但是需要引入
    from
    django.shortcuts import render,redirect,HttpResponse from app01 import models def login(request): #获取提交的数据 # print(request.POST,type(request.POST)) # print(request.POST['user']) # print(request.GET) if request.method == 'POST': user = request.POST.get('user') pwd = request.POST.get('pwd') # print(user,pwd) #None None ret = models.User.objects.filter(name='wcx', pwd='123')[0] if user == ret.name and pwd == ret.pwd: # return HttpResponse('登录成功') #重定向一定要写/ 不然会在当前路径直接拼接前面的/表示根 location return redirect('/index/') else: return render(request,'login.html') return render(request,'login.html')

    另外与之相对应的在项目中的urls.py中需要加入  from app01 import views

     3.ORM 的介绍和使用

    3.1 在Django中使用mysql数据库

    • 创建mysql数据库
      #通过cmd命令进入mysql 创建一个数据库
    • 在settings.py中配置
      DATABASES = {
                'default': {
                'ENGINE': 'django.db.backends.mysql',
                'NAME': 'day58',
                'HOST': '127.0.0.1',
                'PORT': 3306,
                'USER': 'root',
                'PASSWORD': '',
        }
      }
    • 告诉Django使用pymysql 模块连接mysql对数据库
      #在于settings.py同级的目录下的__init__.py中写代码
      import pymysql
      pymysql.install_as_MySQLdb()
    • 在models.py中写类
      #此处以登录所用的账号密码为例
      class User(models.Model):
          name = models.CharField(max_length=32)
          pwd = models.CharField(max_length=32)
    • 执行数据迁移的命令
      #在命令行使用manage.py文件执行
      python manage.py makemigrations 
      #上述命令是将modles.py的变更记录记录下来(但是并没有在数据库中执行操作)
      python manage.py migrate
      #将变更记录的操作同步到数据库中
    • 在pycharm 右侧的 Database中配置mysql

               

                

                

     3.2  ORM 的操作

    • all  获取所有数据
      #获取到的是对象列表
      modles.User .objects.all() 
    • get 获取某一条数据
      #获取的是对象
      #另外 在没有或者是多个的时候回报错
      modles.User.objects.get(xxx=xxx)
    • filter 获取满足条件的所有对象
      #获取到的是对象列表
      models.User.objects.filter(name='alex',pwd='1') 
    • obj.name   name字段的值
      obj.pwd   pwd字段的值
      obj.id  obj.pk
  • 相关阅读:
    各种 SDk
    面试第一周
    KVC/KVO 的概述和使用
    How Many Tables HDU
    The Suspects POJ
    Wireless Network POJ
    Layout POJ
    The Shortest Path in Nya Graph HDU
    Extended Traffic LightOJ
    Tram POJ
  • 原文地址:https://www.cnblogs.com/wcx666/p/10027410.html
Copyright © 2020-2023  润新知