测试开发之创建你的第一个Django项目(一)
一.代码仓库同步
1.目的
为了使得代码管理更加方便,如果你不打算同步的话,可以直接跳到第二大步——创建django项目
其次,你也可以使用github、svn等代码仓库管理你的代码,这里选用gitee是方便无访问国外网站,微信端可以随时通过gitee查看代码笔记的我这种懒人。
2.gitee创建仓库
gitee账号创建这种事各位大佬想必都是信手拈来,这里就不做赘述。
①.登录gitee
②.创建仓库
③.填写对应的相关信息,点击创建
④.创建好了之后的页面如下,可以添加一个初始化文件,跟着提示的命令进行操作即可
3.将仓库clone到本地
以windows操作系统为列
①.安装git
②.在本地需要构建仓库的地方右键选择git bash here
③.复制在gitee构建的仓库的https地址
④.输入
git clone 你的仓库https地址
⑤.完成(文件夹尽量不要出现中文和空格)
⑥.之后即可在本地同步代码到gitee仓库,同时可以在别的电脑同步代码,后续细讲
⑦.常用命令
git clone #克隆项目 git add ./ #添加 git commit -m "提交描述" git push origin master
二.创建django项目
django是一个高级的python web框架
1.创建虚拟环境
实际开发过程中每一个项目都会单独的创建一个python的虚拟环境。
本质上python的虚拟环境是对系统python环境的一个拷贝,依赖系统环境,又和系统环境隔离。
virtualenv
安装:
pip install virtualenv
创建虚拟环境
virtualenv <环境名称>
会在当前目录下创建一个python的虚拟环境
可以通过-p参数指定要虚拟的python解释器
使用pycharm创建
注意:必须要专业版,社区版有些功能被阉割了
①.在pycharm中打开这个项目
②.File -> settings -> project -> Python interpreter -> show all -> 左下角加号添加
③.我个人习惯,喜欢专门创建一个文件夹存放我的虚拟环境(该文件夹无中文和空格符号,否则容易导致项目报错,你还找不到原因),勾选一个基本的解释器就行。
④.等待创建成功
⑤.创建好了之后,你就得到了一个干净的虚拟环境了,点击apply应用这个虚拟环境
⑥.关于配置pip全局镜像,请查看往期内容,关键字搜索,pip配置全局镜像
2.虚拟环境的使用
使用Terminal
在pycahrm中使用Terminal等效于windows的cmd,mac的终端
我为什么使用Terminal
①.由于我使用的是虚拟环境,我通过pycharm打开该项目,在Terminal我可以直接进入该项目的虚拟环境
如图所示,前面括号里面的便是虚拟环境名称
②.方便管理,一个项目对应一套环境,在实际工作中可以避免环境的冲突
③.如果是用windows或者mac自带的,那么你直接在项目根目录下使用pip,他会直接引用你环境变量中配置的第一个python环境,而不是你当前的项目的虚拟环境,除非你把虚拟环境配置到环境变量并且是第一个(使用命令where python 或 where pip查看你电脑拥有的环境变量)
④.在Terminal进行pip下载,下载的site-package直接就在你虚拟环境里面
3.django下载
两个等于号,前后不能有空格
pip install django==2.2
看到这句就是下载成功了
4.创建django项目
①.依然在Terminal中,确认一下是在项目根目录下
②.创建django项目(项目名自己取,我取的是XZAndroidPlatform)
django-admin startproject <project_name>
③.进入创建的这个项目里面,创建app(app名字自己取,我的是xiaozai_app)
django-admin startapp xiaozai_app
④.启动项目
python manage.py runserver
⑤.点击该网址,看到如下页面,恭喜你成功创建自己第一个django项目
5.重新打开django项目
pycharm重新打开XZAndroidPlatfor
①.pycharm一键启动django项目
重新打开项目之后,可以看到pycharm上方有如下按钮(社区版没有),点击绿色按钮即可启动django项目
如果出现红叉,请点开编辑,选择前面创建的虚拟环境路径即可
我的配置如下
注:如果勾选了Run browse,那你每次启动django服务的时候都会自动给你打开浏览器进入django项目下。
②.修改端口
修改上图的post,因为8000端口很容易被平常其他的项目占用,我们可以改为其他的不常用的端口,如8088,8099等
我的改为了8088端口
③.认识各个文件
XZAndroidPlatform 文件夹 - > 项目文件夹
-- xiaozai_app 文件夹 -> 注册的app
--- migrations文件夹 -> 迁移记录
--- admin.py : 把数据库的具体表注册到后台,便于管理(后台管理)
--- apps.py : 当前应用配置信息的入口
--- models.py : 数据模型模块
--- tests.py : 单元测试
--- views.py : 视图,写实际后端代码
-- XZAndroidPlatform 文件夹 -> django的项目目录
--- settings.py:相关设置及配置
--- urls.py :项目的跟路由,连接url和后端的桥梁
--- wsgi.py :兼容wsgi协议的web服务器入口
-- db.sqlite3 :django自带的一个小型数据库文件,而且是数据库本体,一般小项目可以直接使用
-- manage.py :项目管理命令行工具
④.Django的常用命令
任务 | 命令 |
---|---|
创建新项目 | django-admin.py startproject project_name (注意: windows系统下请用django-admin startproject xxx) |
创建新应用 | python manage.py startapp app_name (注意: 你需要先cd进入创建的项目文件夹) |
检测模型变化,生成新的数据库迁移文件 | python manage.py makemigrations [app_label] (注意: app名字可选。如果一个项目包含多个app,而你只更改了其中一个app的模型,建议后面加入具体的app名) |
同步数据库与模型 | python manage.py migrate |
启动服务器 | python manage.py runserver |
创建超级用户 | python manage.py createsuperuser |
修改用户密码 | python manage.py changepassword username |
打开交互终端 | python manage.py shell python manage.py dbshell(数据库交互) |
查看当前版本 | python manage.py version |
django-admin.py和manage.py其它命令
命令 | 用途 |
---|---|
python manage.py flush | 清空数据库内容,只留下空表 |
python manage.py test | 开始测试 |
python manage.py collectstatic | 搜集静态文件 |
python manage.py createcachetable | 创建缓存表 |
python manage.py check | 检测项目有没有问题 |
python manage.py inspectdb [table] | 根据已有数据库反向生成django模型。你可以选择数据表名字 |
python manage.py makemessages | 搜集所有的messages,可以生成指定文件格式如xml文件,供后期翻译 |
python manage.py sendemail [email] | 发送测试邮件 |
python manage.py showmigrations | 显示所有数据库迁移文件 |
三.初始化项目操作
①. admin.py自动注册
admin.py里写成如下这样,自动注册(原作者:测试开发干货——我去热饭)
代码语言:javascript复制from django.contrib import admin
# Register your models here.
import inspect,sys
from .models import *
cls_members = inspect.getmembers(sys.modules[__name__],inspect.isclass)
for name,cls in cls_members:
admin.site.register(cls)
②.settings.py文件添加配置
(1)修改时区和语言
代码语言:javascript复制LANGUAGE_CODE = 'zh-hans' # 改中文
TIME_ZONE = 'Asia/Shanghai' # 改时区
修改之后启动项目界面变成了中文
(2)安装应用
在settings文件的INSTALLED_APPS中去注册。
新增xiaozai_app
代码语言:javascript复制INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'xiaozai_app'
]
(3)增加可访问权限
代码语言:javascript复制ALLOWED_HOSTS = ['*'] #让其他人都能访问本平台
一般情况都是填写允许的访问IP,这里我填写的是允许所有
(4)解决跨域问题
跨域资源共享。
浏览器默认是不允许跨域发送ajax。
我们当前项目需要允许跨域。
跨域如何实现?
通过请求头,需要浏览器和服务器同时支持。
整个cors通信过程,都是浏览器自动完成的,不需要用户参与。
1.先pip install django-cors-headers
2.把中间件修改成如下配置
注意:设置的时候要设置到所有的返回响应的中间件的最上面
代码语言:javascript复制MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'corsheaders.middleware.CorsMiddleware', #第三方解决跨域头问题的中间件
'django.middleware.common.CommonMiddleware',
# 'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
# 'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
CORS_ORIGIN_ALLOW_ALL = True #加上允许所有跨域
如果只想运行某几个IP跨域,则书写如下:
代码语言:javascript复制# CORS设置
# 允许跨域的域名列表
CORS_ALLOWED_ORIGINS = [
'http://localhost:8080',
'http://127.0.0.1:8080'
]
(5)创建超级管理员
python3 manage.py createsuperuser
3.配置成所有人都可以进行访问的地址
①port处为空
②Additional options 写为 0.0.0.0:8000
③勾选Run browser并填写相关内容(可以不勾,填在Host那里也可以)
到此,一个django项目的创建终末就结束了。