1. django下载
a 命令行模式
pip3 install django # 下载最新版本
pip3 install djagno==1.11.16 # 下载指定版本
pip3 install django -i 豆瓣源
b. pycharm
file-->settings--->project ----> 点击+---->Django---->install
2. 创建第一个项目
a. 命令行
django-admin startproject 项目名称
b. pycharm
file-->New project --->左边选择Django--->右边上面第一行设置路径和项目名称----> 选择解释器---->指定APP名称--->create
3. 创建APP
"高内聚,低耦合"
a. 命令行
python manage.py startapp 项目名称
# 注意:
命令行创建的APP需要手动注册
添加app01的配置:(setting 文件)
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# 注册方式;
# "app01",
'app01.apps.App01Config', # 推荐这种方式
]
b. pycharm
同上pycharm创建项目时指定
注意:templates文件拼接,(html文件直接放入templates文件夹中,不需要添加任何文件夹)
4.添加配置文件:
statics,下面放文件夹:css,images,js,plugins(pep8 python开发规范)
5. 启动项目:
a.命令行
python manage.py runserver # 127.0.0.1:8000 默认
python mange.py runserver 80 # 127.0.0.1:80
python manage.py runserver 0.0.0.0:8888 # 0.0.0.0:8888# 注意:要在manage.py同级目录执
b. pycharm
右上角的绿色三角按钮
在edit进行修改配置
6. 路由层
a. 分组
a1. 无名分组
re_path(r'^articles/([0-9]{4})/$', views.articles_year), # 无名分组,按位置传参
a2. 有名分组
re_path(r'^articles/(?P<year>[0-9]{4})/$', views.articles_year), # 有名分组,按关键字传参
b. 反向解析
b1. 基本使用
path("login2/", views.login, name="Login"),
# 在python代码使用反向解析
from django.urls import reverse
reverse(name)
# 在模板里使用反向解析 [html文件]
{% url 'name' %}
b2. 无名分组的反向解析
re_path(r'^articles/([0-9]{4})/$', views.articles_year, name="ar_year"),
# 在python代码使用反向解析
from django.urls import reverse
reverse("ar_year", args=(2019,))
# 在模板里使用反向解析
{% url 'ar_year' 2019 %}
b3. 有名分组的反向解析
re_path(r'^articles/(?P<year>[0-9]{4})/$', views.articles_year, name="ar_year"),
# 在python代码使用反向解析
from django.urls import reverse
reverse("ar_year", kwargs={"year": 2018})
# 在模板里使用反向解析
{% url 'ar_year' year=2018 %}
b4. 名称空间
path("app01/", include(("app01.urls", "app01"))), # /app01/test/
path("app02/", include(("app02.urls", 'app02'))),
# 在python代码使用反向解析
from django.urls import reverse
reverse("app01:name")
# 在模板里使用反向解析
{% url 'app01:name' %}
7. 视图层
a. request请求对象
a1. 对象的属性
request.GET
request.POST
request.body # 原生的请求体的内容
request.path # 获取当前请求的url
request.method # 获取当前请求的方式
a2. 对象的方法
get_full_path() # 获取当前请求的完整url
例子:
1111 /app01/login2/
5555 /app01/login2/?name=liuzhihua&age=18
is_ajax() # 判断当前请求是否是ajax请求, 返回值为布尔
b. HTTPResponse响应对象(响应三剑客)
b1.- render 返回模板文件
必须参数:
- request
- 模板文件
- 可选参数(数据)
- HTTPResponse
返回字符串
b2.- redirect
重定向
![1572770043580](assets/1572770043580-1572771834207.png)