首页 > 其他分享 >【无标题】常见框架:Django框架<全能型框架MTV>

【无标题】常见框架:Django框架<全能型框架MTV>

时间:2023-01-01 17:55:43浏览次数:65  
标签:框架 全能型 detail 视图 django 虚拟环境 无标题 kwargs path

第一课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远程创建:

image-20221210064309122

pycharm config设置

image-20221210065252306

启动django项目:

python manage.py runserver 0:8000

image-20221210070410491

为了方便pycharm快速启动项目,配置django configration:

image-20221210072750223 image-20221210072814328

创建命令****: python manange.py startapp app_name

创建视图:

第二节课django URL路由分配以及模板渲染方式

  1. 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:锚点# 
    
    
  2. django路由系统;

当一个请求来到时:

​ 1.首先到项目目录下的urls.py(根据URLconf模块)中,查找路由规则

image-20221215210812453

​ 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/")

标签:框架,全能型,detail,视图,django,虚拟环境,无标题,kwargs,path
From: https://www.cnblogs.com/kslove/p/17018358.html

相关文章