项目源码下载:https://github.com/Cherish-sun/NEWS/tree/master
一、开发目的
通过新闻系统前后端分离开发,在后端开发web api的过程中让你快速熟练掌握django rest framework框架的开发,让你要项目实战中掌握rest 标准api的开发技术。在前端开发让你快捷简便的掌握django模板调用api的过程。
二、开发环境
•开发工具:Pycharm
•开发环境为: Windows10、Python3.6.8、Django2.0.3、djangorestframework(3.8.2)
•数据库:Mysql5.6
•前端:Div+Css 、ajax 、 Django2.0.3
•后端:Django2.0.3、djangorestframework(3.8.2)
三、创建项目和应用
django-admin.py startproject newsapi
python manage.py startapp article
四、安装项目所需依赖包
pip install django==2.0.3
pip install djangorestframework==3.8.2
pip install pymysql
pip install Markdown
pip install django-filter
pip install django-crispy-forms
pip install django-cors-headers
pip install django-rest-swagger
五、配置setting.py
# 注册app
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'article', # 我们的app
'rest_framework', # 前后端分离框架
'crispy_forms', # 展示表单
'django_filters', # 查询
'rest_framework.authtoken', # 认证
]
# 连接mysql数据库
DATABASES = {
'default': {
'NAME': 'news', # 数据库名
'ENGINE': 'django.db.backends.mysql',
'USER': 'root', # 用户名
'PASSWORD': 'test', # 密码
'HOST': '127.0.0.1', # 主机IP
'PORT': '3306', # 端口
'useSSL': 'false',
}
}
# 时间设置
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_L10N = True
USE_TZ = False # 默认是True, 时间是UTC时间,由于我们要用到本地时间,所以设置成False
# 默认文件路径设置
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static').replace('', '/')
STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'),)
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media').replace('\\', '/')
windows上mysql安装可参考我的另一篇文章:https://www.jianshu.com/p/d16fb1679a87
打开mysql连接工具,我用的是HeidiSQL,下载安装:https://jingyan.baidu.com/article/f7ff0bfc3f2d132e26bb13d4.html,创建数据库news
六、初始化配置rest framework(setting.py中)
# token rest framework 配置实现
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticated', # 必须有
),
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.BasicAuthentication',
# 'rest_framework.authentication.TokenAuthentication',#系统已有的
'article.auth.MyTokenAuthentication', # 自定义的带过期的认证
),
'DEFAULT_RENDERER_CLASSES': (
'rest_framework.renderers.JSONRenderer',
),
'DEFAULT_PARSER_CLASSES': (
'rest_framework.parsers.JSONParser',
)
}
七、配置pymysql
# 在setting.py 同级目录下的init文件导入
import pymysql
pymysql.install_as_MySQLdb()
此时项目结构应该为:
文件中newsapi_env是我创建的python虚拟环境(建议,防止各个项目环境相互影响),不创建也可以。