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
原文地址:https://www.cnblogs.com/wcx666/p/10027410.html