1、 JsonResponse
return JsonResponse(data, safe=False, json_dumps_params={'ensure_ascii': False})
2、 HttpResponse
return HttpResponse(json.dumps(data, ensure_ascii=False))
3、 类视图
类视图: 结构清晰
更强的复用性
需要继承View: from django.views import View
from django.views import View
from django.http import JsonResponse
class Index(View):
def get(self, request):
# 获取数据时使用get方法
return JsonResponse({'msg': 'OK', 'code': 200})
def post(self, request):
# 添加数据使用post
pass
from django.urls import path
from . import views
urlpatterns = [
path('index/', views.Index.as_view())
]
1、静态路由
urlpatterns属性
urlpatterns是路由文件中的一个全局变量,用来存放路由及视图函数的映射关系
用户发起的请求URL
都会首先进入主控制目录下的这个urls.py
文件中进行查找匹配
urls.py
下的urlpatterns
全局变量,这是一个路由规则实例的列表数据。django
进行异常处理其中urlpatterns
中的每一个路由映射规则可以由path
或re_path
进行构造
注意:Django
的路由不考虑HTTP
请求方式,仅根据URL进行路由;即,只要URL
相同,无论POST
、GET
等哪种请求方式都指向同一个操作函数
path方法
path(str, view, kwargs=None, name=None)
'''
str:一个匹配对应url地址的规则字符串
view:路由对应的视图函数,并且会自动封装HttpRequest作为第一个参数给这个视图函
kwargs:视图函数的关键字参数
name:该路由的全局命名,可以让我们方便的在django项目中任意部分显示的使用,相当于为url取变量名,接下来全局使用该命名值即可;当对应url路由改变之后,结合路由反向解析使用的地方不需要更改路由
'''
re_path
re_path(regex, view, kwargs=None, name=None)
'''
regex:一个匹配对应url地址的规则字符串
view:路由对应的视图函数,并且会自动封装HttpRequest作为第一个参数给这个视图函
kwargs:视图函数的关键字参数
name:该路由的全局命名,可以让我们方便的在django项目中任意部分显示的使用,相当于为url取变量名,接下来全局使用该命名值即可;当对应url路由改变之后,结合路由反向解析使用的地方不需要更改路由
'''
案例
新闻 分类
1、新建django项目
使用pycharm创建项目
file---newProject
使用命令创建项目
django-admin startproject projectname
2、 新建app
python manage.py startapp app01
**3、 配置settings.py,在settings.py中配置app,切换语言和时区,切换数据库为mysql, **
INSTALLED_APPS = [
...
'app01.apps.App01Config',
]
LANGUAGE_CODE = 'zh-hans' # 语言
TIME_ZONE = 'Asia/Shanghai' # 时区
USE_TZ = False # 让修改的时区生效
# 配置数据库
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 引擎,使用 mysql
'NAME': 'day04', # 数据库名称
'USER': 'root', # 数据库的登录用户名
'PASSWORD': 'root1234', # 数据库的登录的密码
'HOST': '127.0.0.1', # 数据库所在的主机
'PORT': 3306, # 数据库使用的端口号
}
}
需要在settings.py所在的目录下init.py中,写入以下内容
import pymysql
pymysql.install_as_MySQLdb()
4、 在后端进行跨域配置
什么是跨域问题?
指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器施加的安全限制。
所谓同源是指,域名,协议,端口均相同,只要有一个不同,就是跨域。
django后端跨域
安装django-cors-headers
pip install django-cors-headers
# pip show 模块名, 查看某个模块是否安装过
pip show django-cors-headers
在settings.py下的INSTALLED_APPS中进行配置
INSTALLED_APPS = [
# 第三方包
'corsheaders', # 跨域
'app01.apps.App01Config',
]
在settings.py下的MIDDLEWARE中配置
MIDDLEWARE = [
'django.contrib.sessions.middleware.SessionMiddleware',
# 在这里进行配置跨域 , 在中间件第三行
'corsheaders.middleware.CorsMiddleware',
'django.middleware.common.CommonMiddleware',
# 注释掉csrf这一行,第五行
# 'django.middleware.csrf.CsrfViewMiddleware',
]
在settings.py中添加变量,允许所有的