三板斧的使用和JsonReponse序列化类的使用
# 通过路由访问到视图函数的时候返回的响应数据 不能返回None
from django.shortcuts import render,HttpResponse,redirect
# 第一种 HttpResponse
def index(request):
print('aaa')
# 返回的数据是字符串格式
return HttpResponse('我是index页面')
第二种 render
from django.shortcuts import render,HttpResponse,redirect
def index(request):
print('aaa')
# 返回的是html页面
return render(request,'templates/login.html')
第三种 redirect
def register(request):
print(111)
# 访问到这个地址之后 再跳转到下面给的另一个地址
return redirect('http://www.baidu.com')
JsonReponse序列化类的使用
序列化
json格式的数据
{"a":1}
json有什么用:
跨语言传输
序列化:json.dumps
反序列化:json.loads
from django.http import JsonResponse
def index(request):
# user_dict = {'username':'kevin你好'}
user_dict = [1, 2, 3, 4]
# res=json.dumps(user_dict,ensure_ascii=False)
# return HttpResponse(res)
# 通过看源码学技术 # 这个参数是显示中文
# return JsonResponse(user_dict,json_dumps_params={'ensure_ascii':False})
# safe: 这是一个布尔值,返回前端的格式 是否允许其他格式 如果为True 只能返回字典
return JsonResponse(user_dict,safe=False)
# return render(request,'index.html')
全局配置文件的介绍
import os
# 获取项目的绝对路径
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# django配置文件的密钥 可以随便修改
SECRET_KEY = 'kf+pvfb0hy^pj2$e$!ij4xvcaxk%+s+vv!px-f+50di)9ikh#^'
# 这里是调试模式 没上线的时候用的 上线之后改为False
DEBUG = True
# 限制访问的 * 号代表所有都可以访问
ALLOWED_HOSTS = []
# 注册APP应用的
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app01'
]
# 中间件
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',
]
# 文件路由的地址
ROOT_URLCONF = 'day52.urls'
# html模板文件
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [BASE_DIR,'templates'],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
# 启动文件
WSGI_APPLICATION = 'day52.wsgi.application'
# 连接数据库
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
AUTH_PASSWORD_VALIDATORS = [
{
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
},
]
# 修改中文
LANGUAGE_CODE = 'en-us'
# 修改时区
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True
# 静态文件
STATIC_URL = '/static/'
request对象方法
request中GET方法
from django.shortcuts import render,HttpResponse,redirect
def index(request):
# request.method 中获取请求方式 必须是大写
if request.method == 'GET':
# 单个获取get请求过来的数据 但是一般提交的数据是post方法来提交
print(request.GET.get('name'))
print(request.GET.get('age'))
# 一次性获取多个get传过来的数据 但是取出来的key一样
# http://127.0.0.1:8000/index?name=huang&name='lu'&name='shun'
print(request.GET.getlist('name'))
return HttpResponse('ok',200)
return HttpResponse('POST请求')
request中POST方法
def register(request):
if request.method == 'POST':
# 如果参数一样 默认取出最后面一个
print(request.POST.get('username'))
print(request.POST.get('password'))
# 前端传过来的数据像 hobby = {'hobby':'username','hobby':'password','hobby':'age',}
# ['huang', 'lu', 'ping']
# 也可以通过所有取值
print(request.POST.getlist('username')[1])
return HttpResponse('200 OK')
return HttpResponse('不走post方法就走get方法')
pycharm连接数据库
Django连接数据库
# 先安装 pymysql 模块
在任意的__init__.py文件中添加一下代码
import pymysql
pymysql.install_as_MySQLdb()
# 找到 settlings文件 里面有一个叫 DATABASES
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'HOST' : '127.0.0.1', # 数据库服务器的IP地址
'PORT' : 3306,
'USER': 'root', # 用户名
'PASSWORD' : '123', # 密码
'NAME' : 'db1', # 数据库的名字
'CHARSET': 'UTF-8', # 编码格式
}
}