django三板斧,request对象,django,pycharm连接数据库, django orm及其字段的增删改查 #day51
django三板斧
归档
1. 文件归档,
2. 时间归档
# 第一版, HttpResponse返回是字符串
# return HttpResponse('ok')
# 第二版, 返回为html文件
# return render(requset, 'index.html')
# 第三版, 返回一个外链地址
# return redirect('http://www.baidu.com')
# 也可返回自己的地址
# return redirect('/home/')
静态文件配置
# 在django中,html文件存在哪?
templates
# 在django中,静态文件都放在static中
第一种方式:
<link rel="stylesheet" href="/script/css/bootstrap.min.css">
第二种方式:
{% load static %}
<link rel="stylesheet" href="{% static 'css/bootstrap.min.css'%}">
什么是静态文件?
css
js
jq
img
request对象
####### settings.py中 前期先把下面一行注释掉,不验证csrf #####
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
# 'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
def login(request):
# 应该区别不同的请求方式,做不同的事情
"""
1. get请求来的时候,只渲染一个登陆页面
2. post请求,接收参数
如何区分不同的请求方式?
:param request:
:return:
"""
# print(type(request.method), request.method) # <class 'str'> GET
if request.method == 'POST':
# 如果判断成立,也就是post请求方式
# 接收参数
"""
<QueryDict: {'username': ['egon'], 'password': ['123']}> <class 'django.http.request.QueryDict'>
"""
# print(request.POST,type(request.POST))
username = request.POST.get('username') # egon
password = request.POST.get('password') # 123
# print(username)
# print(password)
# print(request.POST.get('hobby')) # 只能接收最后一个
# print(request.POST.getlist('hobby')) # 接收多个值
if username == 'egon' and password == '123':
pass
# 接收get请求
request.GET.get('name')
request.GET.getlist('age')
# 接收用户名和密码
# 给用户一个html文件,登录页面
return render(request, 'login.html')
django连接mysql
在配置文件setting.py中,修改字段DATABASE
DATABASES = {
# 'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
# }
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'db5',
'USER': 'root',
'PASSWORD': '111',
'HOST': '127.0.0.1',
'PORT': '3306',
'CHARSET': 'utf8'
}
}
django ORM
# ORM:关系映射
# 作用:将原生SQL语句,转为代码操作SQL,本质是执行SQL语句
1. orm的书写位置:models.py
类 表
属性 表里的字段对应的值
对象 表里的记录
class User(models.Model):
# id int primary key auto_increment
id = models.AutoField(primary_key=True)
# name varchar(64)
name = models.CharField(max_length=64)
"""
CharField,max_length参数必须制定
"""
# password varchar(32)
password = models.CharField(max_length=32)
每次改变了跟数据相关的代码,都要执行数据库迁移命令:
#################必须掌握##################################
python3 manage.py makemigrations # 生成迁移记录(笔记本),没有操作数据库
python3 manage.py migrate # 真正操作了数据库
##################必须掌握##################################
django orm字段增删改查
# password varchar(32)
password = models.CharField(max_length=32)
"""
数据库迁移
"""
# 增加字段
# age = models.IntegerField()
# 修改字段
# age1 = models.IntegerField()
# age1 = models.IntegerField()

浙公网安备 33010602011771号