主要内容:
- 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