Python——Django框架(一)MVC与MTV,Django的创建与简单使用,以及一些特定功能的文件夹,url路由控制系统

Python——Django框架(一)

参考博文:https://www.cnblogs.com/yuanchenqi/articles/6083427.html

请注意你的Django版本,博主虽然看的视频是Djnago2,但使用的版本是Django 3.1.5,博客会尽可能根据3.1.5此版本来写,但不一定写得完整。

一、MVC模式与MTV模式

1、MVC模式

在这里插入图片描述
在MVC模式里面的V,是一个个html文件。

2、MTV模式

在这里插入图片描述
Model就是怎么去通过py的语法调用数据库的表以及记录。
T是模板,给用户看。也就是一个个html文件。
V是视图函数。

MTV模式里面的V,是视图函数,跟MVC的V不一样。MVC的 V 对应的是MTV的 T,

MTV与MVC基本差不多,就只有一点点区别。

二、Django通过命令行创建

注:如果是专业版,可直接通过左上角new创建Django项目。如果不能,则是社区版,需要通过命令行创建。

django
    #安装: pip3 install django
          添加环境变量

    #1  创建project   		  #此处是创建Django项目
       django-admin startproject mysite
       ---mysite
          ---settings.py
          ---url.py
          ---wsgi.py
       ---- manage.py(启动文件)  

    #2  创建APP          #创建了Django项目之后才能创建项目文件夹
       python mannage.py startapp  app01

    #3  settings配置
    
       TEMPLATES
       STATICFILES_DIRS=(
            os.path.join(BASE_DIR,"statics"),
        )

       STATIC_URL = '/static/' 
       #  我们只能用 STATIC_URL,但STATIC_URL会按着你的STATICFILES_DIRS去找#4  根据需求设计代码
           url.py
           view.py

    #5  使用模版
       render(req,"index.html")   

    #6  启动项目
       python manage.py runserver  127.0.0.1:8090

    #7  连接数据库,操作数据
       model.py

三、创建完Django来简单的使用下

1、写个返回时间的页面

创建好之后,大概长这样(创建完Django项目后,再创建你想要的APP项目文件夹,下面的blog就是)
在这里插入图片描述

其中static文件夹是放静态文件的地方,属于后面新建的文件夹。

首先先来简单写个url,写个showtime,在views文件里面写个showtime函数:
在这里插入图片描述
可以看到里面有个形参,它就是客户端(浏览器)发送给你的服务器之后,服务器给你打包的信息对象,全在这个形参里面。

记得要在views文件里加入这个东西:
在这里插入图片描述

然后在urls文件里面写下文件的路径:
在这里插入图片描述

因为views与urls属于不同的文件夹,所以先要导入文件,再使用!

接着就启动下Django看下是否有无问题:
进入控制台:
在pycharm的下方点击Terminal,进入你Django的文件夹里:
在这里插入图片描述

接着输入:
在这里插入图片描述

启动成功:
在这里插入图片描述

接着输入网址端口:
在这里插入图片描述
注意后面还要接个show_time。

然后可以看到成功了:
在这里插入图片描述
到此,第一个Django项目就成功完成了。
当然我们还能做个页面:
Django的Templates存有所有的html页面信息(如果没有这个文件夹,就自己创建):
在这里插入图片描述
在这里插入图片描述
然后要在配置文件里导入templates的路径:
在这里插入图片描述
在这里插入图片描述

写完了页面,怎么返回这个页面呢?
在views里写个函数:
在这里插入图片描述

然后再看下页面:
在这里插入图片描述
成功!
但是别忘记了我们的目的是返回时间,那么怎么返回呢?
在这里插入图片描述

在这里插入图片描述
这两个大括号,是语法,必须这么写
本来应该是这样:
在这里插入图片描述
在这里插入图片描述
组成一个键值对,发给前端,通过两个大括号渲染出来。如果写了上千个变量难道要一个个写吗?所以通过一个 local( ),就不用一个个写。

然后页面:
在这里插入图片描述

2、样式与静态文件static

当然我们也可以给前端加样式:
在这里插入图片描述

然后页面:
在这里插入图片描述
注意:所有的js文件,css样式等都要放到static文件夹里:
在这里插入图片描述

所有新建的文件夹,都要在配置文件里面导入路径:
在这里插入图片描述
注意,最后这里必须加 逗号

接着在static里面导入jq文件,使用jq加入样式:
在这里插入图片描述

在这里插入图片描述

结果页面:
在这里插入图片描述
成功!

2.1 static路径与别名
导入方式一:(此方法不太推荐,用得少)

在这里插入图片描述
可以看到,STATIC_URL 使用的是别名,就算你的路径名字怎么改,文件名怎么改,html文件中导入的始终是别名,不用改。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

可以看到,页面还是能正常显示:
在这里插入图片描述

问题来了:如果别名改成staticsss,但前端导入的还是static,能正常显示吗?
答:不能,只能按照别名的名字来导入

导入方式二:(推荐此方法,用的最多)

在页面上加入 {% load static %}
在这里插入图片描述
接着导入:
在这里插入图片描述
然后页面:
在这里插入图片描述

友情提醒:Django2中,使用的是{% load staticfiles %}

3、最后

应该把static文件夹放在每一个应用下面:
在这里插入图片描述
路径也要改:
在这里插入图片描述
也可以这样改:
在这里插入图片描述

四、Django的url控制系统

URL配置(URLconf)就像Django 所支撑网站的目录。它的本质是URL模式以及要为该URL模式调用的视图函数之间的映射表;你就是以这种方式告诉Django,对于这个URL调用这段代码,对于那个URL调用那段代码。

urlpatterns = [
    re_path(正则表达式, views视图函数,参数,别名),
]

1、路由里的正则表达(无命名分组)

我们可以在url里引入正则表达式,但是先要导入re_path(在django2中,不用path,使用的是url,可以直接使用正则,但是现在的path不行,导入re_path后才能使用)
在这里插入图片描述
在这里插入图片描述
这里的正则 \d{4} 意思是,四个数字。
于是我们访问页面:
在这里插入图片描述
可以显示:
在这里插入图片描述
当然,只要输入的是四个数字,都可以显示成功

问题:如果我们想要输入什么数字,就输出什么数字呢?

这里加个括号,意思是分组
在这里插入图片描述
此时看页面当然会报错,这时需要加个参数:
在这里插入图片描述
此时你输入什么数字,输出就是什么数字。
如果你还要再加一组数字,表示年/月,还是可以
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、路由里的正则表达(有命名分组)

暂略

3、form表单的get与post提交和django的接收

a、编写页面与准备

此时写个form表单,与对应的函数:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果此时我们通过pycharm给的浏览器选项打开,则可以看到网址输入框显示的并不是8080端口,这种方式是错误的,应该这样:
在这里插入图片描述

那么此时才是Django给我们的页面网址:
在这里插入图片描述
在这里插入图片描述

b、GET方式提交

我们可以接收form表单提交的信息,GET方式提交:
在这里插入图片描述
打印出来的结果是:
在这里插入图片描述
可以看到,成功接收

注意:第一次进入此网页是通过url进来的,来到了register函数,打印了空信息,然后才是通过return语句给的网页再次进入的。所以我们看到的是第二次的页面:
在这里插入图片描述

这里的数据,可以通过get的方式去取得:
在这里插入图片描述

c、POST方式提交

我们还可以通过POST方式提交:
这时会发现,网页出错:
在这里插入图片描述这是因为Django的一个中间件的问题(Django的安全检测),我们可以暂时把他注释掉:
在这里插入图片描述之后就能发现,网页可以访问了。

POST方式还是一样:
在这里插入图片描述在这里插入图片描述

d、同源与不同源和别名

如果此时不要ip与端口:
在这里插入图片描述
一样可以访问,是因为Django自动给你加了,自动按照同源给你加的,按照当前页面的ip与端口给你加。如果直接通过浏览器渲染页面访问,则不行:
在这里插入图片描述

在这里插入图片描述

因为此时action里面没有对应的ip与端口,自然访问失败。

但是:以上的方式都不太好,因为路径写死了,如果以后要改,项目文件很多,要一个个去改,跟前面一样起个别名就可以解决这种问题:
在这里插入图片描述
同时,网页也要相对应的改:
在这里插入图片描述
在这里插入图片描述
这里的别名,切记要加引号

4、路由分发

如果有好几个大型项目,那么其全局url文件里面将可能会有几百上千行,甚至上万,此时非常不好,可能稍微某个地方出错,而牵一发而动全身。所以当然是将他们分开最好:
新建一个py文件,每个项目对应自己的urls文件:
在这里插入图片描述
然后可以看到全局urls文件里有个提示:
在这里插入图片描述
直接复制:
在这里插入图片描述
注意,此时urls导入要加include,不然你会看到有红线报错:
在这里插入图片描述
然后另外一个urls文件写相关代码:
在这里插入图片描述
然后填写网址:
在这里插入图片描述
就可以看到正常访问。
此时路径要多填写一处,因为路径已经改变。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值