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()

 

posted @ 2021-08-10 20:59  Gnomeshghy  阅读(55)  评论(0)    收藏  举报