内部传入一个字符串参数,返回给浏览器。html
在app目录下的views.py添加函数,添加函数以前必须在urls.py添加函数对应关系,不然访问不到python
def login(request): # 业务逻辑代码 return HttpResponse('welcome to GuangDong')
request : 浏览器请求相关的信息mysql
除request参数外还接受一个待渲染的html模板文件和一个保存具体数据的字典参数。总共用三个参数sql
render(request, template_name, context=None)数据库
将数据填充进模板文件,最后把结果返回给浏览器。(相似于以前用的jinja2模块)django
def reg(request): # print(request) # print(request.__dict__) user_dict = {'name':'cxk','sex':'girl'} # return render(request,'reg.html') # 给模板传值的方式1: # 将user_dict传递给reg.html页面 页面上经过xxx就可以获取到该字典 return render(request,'reg.html',{'user':user_dict}) # 给模板传值的方式2: # 这种状况是针对有多个字典的状况下, # locals()将当前名称空间中全部的变量名传递给html页面,在html页面用user_dict.name方式取值 # 可是会有一个问题:影响效率。 print(locals()) return render(request,'reg.html',locals())
接受一个URL参数,表示跳转到指定的URL。至关于重定向。后端
当我在浏览器输入http://127.0.0.1:8000/home时,他就会自动跳转到https://www.autohome.com.cn浏览器
def home(request): # return redirect('/index') return redirect('https://www.autohome.com.cn') def index(request): return HttpResponse('index')
第一步:从settings配置文件中配置app
# django会自带一个小型的sqlite3数据库,咱们只需改回咱们用的mysql就好了 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'user_info', # 数据库名 'USER':'tomjoy', 'PASSWORD':'123456', 'HOST':3306, 'CHARSET':'utf8' } }
第二步:函数
django默认使用的是mysqldb链接数据库 可是该模块不支持了
因此须要告诉django不要用mysqldb,得用pymysql链接
你能够在项目名下面的__init__.py也能够在应用名下面的__init__.py文件中指定
import pymysql pymysql.install_as_MySQLdb()
在views.py中写函数的时候,每一个函数必须接受一个参数叫request,这个request就是浏览器发送请求的请求数据,django将他封装成一个对象。
1.获取post请求携带的数据
request.POST
2.获取get请求携带的数据
request.GET
发现get和post在后端获取用户数据的时候 规律是同样的
print(request.POST) print(request.POST.get('username')) print(request.POST.get('password')) # <QueryDict: {'username': ['admin'], 'password': ['123']}> # admin # 123
若是是一条数据有多条值,状况又不同了
print(request.POST) print(request.POST.get('username')) print(request.POST.get('password')) print(request.POST.get('hobby')) print(request.POST.getlist('hobby')) # <QueryDict: {'username': ['admin'], 'password': ['123'],'hobby': ['sing', 'dance', 'basketball']}> # admin # 123 # basketball
若是还用get('hobby'),他默认只取最后一个
要用getlist() 才能将完整的列表取出来
ORM即对象关系映射(Object Relational Mapping)
python: mysql:
类 即 数据库中的表
对象 即 表的记录
对象.属性 即 记录的某个字段对应的值
优势:
可以让一个不会数据库操做的人 也可以简单快捷去使用数据库
缺点:
因为封装程度过高 可能会致使程序的执行效率偏低,有时候 结合项目需求 可能需 要你手写sql语句
注意事项
1.django的orm不会自动帮你建立库,库须要你本身手动建立
只会自动帮你建立表 你只须要书写符合django orm语法的代码便可
1.在app下所在的models.py中书写类(建立表)
from django.db import models class User(models.Model): # 设置id字段为user表的主键 id int primary key auto_increment # 在django中 你能够不指定主键字段 django orm会在建立当前表的时候,自动帮你新建一个名为id的主键字段 id = models.AutoField(primary_key=True) # 设置username字段 username varchar(64) CharField必需要指定max_length参数 username=models.CharField(max_length=64) # 在django orm中 没有char字段 可是django 暴露给用户 能够自定义char字段 # 设置password = password int password = models.IntegerField() # phone = models.BigIntegerField(default=110) # 新增的字段 能够提早设置默认值 # addr = models.CharField(max_length=64,null=True) # 新增的字段 能够设置为空
2.上面的代码仅仅是在models.py上面添加了一个类,还没真正在数据库中建立表,
须要再执行两条命令:数据库迁移(同步)命令:
须要在CMD命令行中而且在该项目下的路径执行:
python manage.py makemigrations
不会建立表 仅仅是生成一个记录 将你当前的操做记录到一个小本本上(migrations文件夹)python manage.py migrate
将你的orm语句真正的迁移到(同步)到数据库中 新增的字段:
1.直接提供默认值 default
2.设置该字段能够为空 null=True
注意:不要轻易地注释models.py中任何跟数据相关的代码
只要是跟数据库相关的代码,处理时必定要谨慎谨慎!!!
1.get()方式:
从数据库获取对象(固定写法) models . 表名 . objects.get(条件)
select * from User where username='cxk'
obj = models.User.objects.get(username='cxk')
拿到obj后便可进行点取值
例:
print(obj.username) print(obj.password)
注意:get取值方式在 当查询条件不存在的时候 ,会直接报错 。 若是存在会直接给你返回 数据对象自己。 因此不推荐使用
2.filter()方式 推荐使用
obj = models.User.objects.filter(username='cxk')
--当查询条件不存在的时候 不会报错而是返回一个空
--当条件存在的状况下 不管数据有几条返回的都是列表套对象的数据格式
--filter能够当多个查询条件 而且是and关系,用逗号隔开每一个条件
--你能够将filter查询出来的结果当作列表去对待 ,列表里面放的是一个个对象
--支持正数的索引取值和切片但 不支持负数,因此仍是不建议用切片取值
--建议使用first()取第一个元素
user_obj = obj[0] user_obj = obj[0:3] user_obj = obj[-1] # 报错 user_obj = res.first() 取queryset第一个元素
3.数据的增:
1.create() :
--括号内参数是以关键字参数的形式,去建立数据
--该方法由一个返回值,返回值就是当前对象自己
# 直接将用户名和密码写入数据库 # insert into User(username,password) values('cxk','123') user_obj = models.User.objects.create(username='cxk',password='123')
2.利用对象点方法的方式:
user_obj = User(username='cxk',,password='123') user_obj.save() # 将当前对象保存到数据库中
4.数据的增:
方式一:update()
方式二:
5.数据的删除:
delete()