1.工程搭建
1-1.安装django :
pip install django==1.11.11
1-2.创建工程:
django-admin startproject 工程名称
与项目同名的目录,是工程目录。
settings.py 是项目的整体配置文件。
urls.py 是项目的URL配置文件。
wsgi.py 是项目与WSGI兼容的Web服务器入口。
manage.py 是项目管理文件,通过它管理项目。
1-3.创建子应用:
python manage.py startapp 子应用名称
admin.py 文件跟网站的后台管理站点配置相关。
apps.py 文件用于配置当前子应用的相关信息。
migrations 目录用于存放数据库迁移历史文件。
models.py 文件用户保存数据库模型类。
tests.py 文件用于开发测试用例,编写单元测试。
views.py 文件用于编写Web应用视图。
2.配置工作
2-1.注册安装子应用 : 工程和应用关联起来 settings中
将子应用的apps.py中的Config类添加到INSTALLED_APPS列表中。
2-2.视图和路由
工程urls写应用urls的注册 , 具体路由和视图对应由应用urls来写
2-3.settings文件
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
abspath(__file__) 当前文件的绝对路径
dirname 父目录,上一层目录
BASE_DIR 正好是当前工程所在目录,即 djangoproject 的最上层目录
默认DEBUG=True,生产环境记得改成False
而且不是DEBUG,需要给ALLOWED_HOSTS = ['*'] 设置
语言和时差
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
apps.py中加入
verbose_name = '用户管理' 相当于init和str ,具体说明是干什么用的,方便开发者来看
2-4.静态文件
STATICFILES_DIRS 存放查找静态文件的目录
STATIC_URL 访问静态文件的URL前缀
生产模式时,Django不再对外提供静态文件,需要是用collectstatic命令来收集静态文件并交由其他静态文件服务器来提供
3.路由urls
工程的全部路由信息也可以都定义在主路由文件中,子应用不再设置urls.py
url_map: 路由-视图函数 对应关系 在django中reverse反解析
路由命名:
主urls中,include包含的是路由列表,所以使用 namespace
子应用urls中, 使用 name
reverse反解析:(先命名再反解析)
url = reverse(namespace:name)
4.Request
4-1.路径中的参数 正则 , 可以作为函数的参数取出来
url(r'^weather/([a-z]+)/(\d{4})/$', views.weather)
4-2.?后的参数 # /qs/?a=1&b=2&a=3 (类似:flask中 args方法)
request.GET 得到的是 QueryDict对象(是个字典型) ?后的参数是用对象来取
a = request.GET.get('a') 其实是get('key')
b = request.GET.get('b')
alist = request.GET.getlist('a')
print(a) # 3 是QueryDict对象但不是真的字典,所以key可以重复,而且get获取的是最后的一个key
print(b) # 2
print(alist) # ['1', '3'] getlist方法获取的是所有的key
4-3.请求体中,表单 (类似:flask中 form方法)
request.POST 得到 QueryDict对象
a = request.POST.get('a')
b = request.POST.get('b')
alist = request.POST.getlist('a')
4-4.请求体中,json (类似:flask中 data方法)
request.body 得到 bytes类型
4-5.请求头 (类似:flask中 header方法)
request.MATE['字典的key,字母全大写并且写到下划线']
4-6.其他
request.method 请求方法
request.user 请求的用户对象
request.path 请求的完整路径
request.FILES 上传的文件
5.response 由HttpResponse构建
响应体和数据类型,状态码:
response = HttpResponse(content=响应体, content_type=响应体数据类型, status=状态码)
响应头:
response['key'] = 这样就把响应头写进去了
json:
JsonResponse({}) 类似:flask中 jsonify
重定向:
redirevt