二.Django的模式以及下载安装

MVC和MTV框架

1.MVC

定义

将web应用分为模型(M),控制器©和视图(V)三层,他们之间以一种插件式的、松耦合的方式连接在一起,模型负责业务对象与数据库的映射(ORM),视图负责与用户的交互(页面),控制器接受用户的输入调用模型和视图完成用户的请求,其示意图如下所示:

在这里插入图片描述

2.MTV

Django的MTV模式本质上和MVC是一样的,也是为了各组件间保持松耦合关系,只是定义上有些许不同,Django的MTV分别是值:

  • M (模型Model): 负责业务对象和数据库的关系映射(ORM)。
  • T (模板 Template):负责如何把页面展示给用户(html)。
  • V (视图View): 负责业务逻辑,并在适当时候调用Model和Template。

除了以上三层之外,还需要一个URL分发器,它的作用是将一个个URL的页面请求分发给不同的View处理,View再调用相应的Model和Template,MTV的响应模式如下所示:
在这里插入图片描述

Django的下载和安装

1.下载

pip install Django 1.11

2.创建一个Django项目

方式一:通过命令行创建一个项目

#切换到指定文件夹下
cd Django_pro
#命令创建名称为firstitem的Django项目
django-admin startproject firstitem

创建好的项目目录如下:
在这里插入图片描述
此时项目已经可以运行,切换到该项目firstitem目录下,输入命令行:

# 指定项目运行在8001端口
python manage.py runserver 127.0.0.1:8001

如图:
在这里插入图片描述
此时即可通过浏览器访问127.0.0.1:8001;
同时在该项目的目录下多了名为db.sqlite3的文件夹,这是Django内置的小型数据库;
项目是由多个用于组成的,不同的应用有不同的逻辑,有不同的数据库,因而逻辑是写在各个应用中的;创建应用命令如下:

#切换到项目根目录下
cd firstitem
#执行以下命令行,创建应用app01
python manage.py startapp app01

在这里插入图片描述
通过命令行创建的项目应用,需要在项目下的settings文件中进行app01的相关注册配置
在这里插入图片描述
方式二:通过pycharm工具创建Django项目
在这里插入图片描述
此时settings文件中不需要配置app01,会在创建项目时自动将创建的应用注册,此时settings文件如下:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app01.apps.App01Config',  #路径
]
#其中'app01.apps.App01Config',  为从app01目录下--->apps.py---->App01Config的类---->类中有name = 'app01'

一个简单的Django登录项目实例

根目录下url.py文件文件中负责路径分发的操作,代码如下:

from django.contrib import admin
from django.conf.urls import url
from app01 import views
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    path(r'^login/',views.login),
]

视图函数文件views.py中相关操作:

from django.shortcuts import render
# Create your views here.
def login(request):
	 print(request.path)  			#当前请求路径
	 print(request.path_info)   #当前请求路径
	 print(request.method) 			#请求方法
	 if request.method=='GET':
		 #render中第一个参数是必须给的,里面封装了请求的相关参数;同时需要在settings文件中配置路径,来找到'login.html'文件
		 return render(request,'login.html')   #同时在template文件夹下要创建了login.html 文件
   else:
      print(request.POST)  #其中封装了post请求提交的数据为<QueryDict: {'username': ['aa'], 'password': ['aa']}>
      uname=request.POST.get('username') #优于用字典的键取值
      password=request.POST.get('password')
      if uname=='ww' and password=='123':
  			return HttpResponse('成功')
      else:
        return HttpResponse('对不起,验证失败')
  

之所以可以找到template下的html文件,是在settings文件中的配置:

'DIRS': [os.path.join(BASE_DIR, 'templates')]  #可以找到template下的login.html文件

项目根目录下创建template/login.html文件,内容如下:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
    <title>Bootstrap 101 Template</title>
</head>
<body>
<form action="127.0.0.1:8000/login/" method="post"> <!--提交地址应该加上/login/否则-->
  
<!--action的属性为空时,默认往当前页面的路径下提交;-->  
<!--action的属性为相对路径时,会在前面拼上当前页面的域名和端口号 action='/login/'时,提交的路径为http://127.0.0.1:8000/login/-->  
<!--a标签路径,img标签的路径,script标签的路径,link标签的路径均有此规则,均可写相对路径-->  
登录名<input type="text" name="username">
密码<input type="password" name="password">
    <input type="submit">    
</form>
</body>
</html>

运行该项目:

python manage.py runserver
#默认端口为8000
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值