第一课django环境搭建
前言
Web框架:url,请求对象,响应对象,模板引擎
常见框架:Django框架<全能型框架MTV>/Web.py/flask框架<已经停止维护>/Tornado<facebook维护>
Web应用框架的设计模式:MTV<Model/Template/View> MVC
M:Models 模型:负责业务数据对象与数据库对象;
T:Templates:负责如何把数据展示给用户
V:Views:视图 负责业务逻辑
MVC
V:视图,负责与用户交互的页面
C:控制器,接收用户的输入调用模型与视图
环境准备
-ubuntu
-python 3.6+
-pycharm 2017.1.5+
-Mysql
推荐封装好的Ubuntu或者Virtual box
Python 虚拟环境的重要性
-什么是python虚拟环境
- 通过工具,将系统上的python复制了一份避
优点:
- 不会污染本地系统
- 不同项目环境的隔离
创建虚拟环境:
cd / :根目录
cd ~ :家目录
创建虚拟环境路径: cd ~/.virtualenvs
横行显示:ll
workon: 进入环境
查看当前有哪些虚拟环境:workon
创建虚拟环境:mkvirtualenv -p /urs/bin/python3 envname;
进入虚拟环境:workon envnamee
退出虚拟环境:deactive
删除虚拟环境: rmvirtualenv envname
Django安装
Pip install django
Django简单操作:
创建项目:
django-admin startproject +项目名称
Pycharm远程创建:
pycharm config设置
启动django项目:
python manage.py runserver 0:8000
为了方便pycharm快速启动项目,配置django configration:
创建命令****: python manange.py startapp app_name
创建视图:
第二节课django URL路由分配以及模板渲染方式
-
URL:全球统一资源定位符
http://127.0.0.1:8000/hello/ URL解释: schema://host[:port#]/path/.../[?query-string][#anchor] schema:指定使用的协议(例如:http, https, ftp) host:Http服务器的IP地址或者域名 port:端口号,http默认是80端口 path:访问资源的路径 query-string:发送给http服务器的数据 anchor:锚点#
-
django路由系统;
当一个请求来到时:
1.首先到项目目录下的urls.py(根据URLconf模块)中,查找路由规则
2.根据URLconf模块,里面定义了urlpartterns变量
3.urlpatterns是一个(Django.urls.path,django.url.re_path对象)列表
4.按顺序运行每个url模块,在第一个匹配的模式停止;
5.一旦匹配,django导入并调用给定的视图
6.如果没有匹配到,就返回报错:“404”
-Path(route,view,kwargs = None,name = None)
-route 是一个字符串的url规则
-view是个视图
-kwargs 额外参数,传递给view,必须是一个字典;不是不定长参数,前缀没有**kwargs
-name url的命名
-在urls中捕获参数
https://movie.douban.com/review/14849640/
urlpatterns = [
path('admin/', admin.site.urls),
path("index/",views.index),
path("detail/<pk>",views.detail) # 在URL规中使用'<>'可以捕获url中的值传给视图
path("detail/<pk>/<slug>/",views.detail),
path("detail/<pk>-<slug>/",views.detail),
#视图
def detail(request,pk):
return HttpResponse("学生ID为%s的详情页"%pk)
-路径转换器
案例:int:pk
path("detail/<int:pk>-<slug>/",views.detail)#利用类型转换路径为int类型
-常用转换器:
https://www.jianshu.com/p/4287d7373487
-str 匹配除了'/'路径分隔符之外的所有字符串
-int 匹配任意整数
-UUID 格式化 ID
-匹配任意ascii字符,加上连字符和下划线
-path,匹配任意非空字符
-使用re_path;
python正则命名方式re_path:正则表达式:(?pattern)
re_path('student/(?P<year>\d{4})/(?P<month>[0-9]|1[0-2])/',views.student)
def student(request,year,month):
return HttpResponse("%s年%s月报名的学生列表"%(year,month))
Django Url搜索什么:
只搜索路径,不搜索参数和请求方式POST,GET
-传递额外参数
path,re_path 方法,传递一个kwargs的字典参数,传递给视图函数
**********当kwargs中的key与url捕获的key一致的时候,以kwargs为准
path('index/<pk>/',views.index,kwargs = {'pk':10}),
如果需要在每个url去使用,可以在总路由去设置kwargs = {'slug':True}
-
URL 命名
页面重定向;可以跳转页面
def home(request): return redirect("https://www.baidu.com/")