Django-MVT以及Django基础

网友投稿 295 2022-06-24


一.框架

框架是应对某类软件设计问题而产生的,它是由各个软件模块组成的,每个模块都有特定的功能,模块与模块之间通过相互配合来完成软件的开发。

二. MVC 框架

MVC简介

MVC的理念: 分工,让专门的人去做专门的事。

MVC的核心思想: 解耦。

Web MVC框架模块功能

三.Django框架

3.1Django简介

Django ,遵循MVC思想,但是有自己的一个名词,叫做MVT。

3.2Django中的MVT

3.3Django安装

pip install django

// 指定版本 安装

pip install django==2.2.2

3.4第一个Django项目

建立项目

django-admin startproject mysite

项目目录

.

├── manage.py // django项目的管理文件

└── mysite

├── __init__.py //__init__.py: 说明是一个python包。

├── settings.py //配置文件

├── urls.py //url路由配置

└── wsgi.py // web服务器和Django交互的接口

创建Django应用(app)

cd mysite //进入django项目中

python manage.py startapp testapp // testapp 为App的名字

// 也可以使用

django-admin startapp testapp

3.5配置文件 settings

注册应用

INSTALLED_APPS = [

'django.contrib.admin',

'django.contrib.auth',

'django.contrib.contenttypes',

'django.contrib.sessions',

'django.contrib.messages',

'django.contrib.staticfiles',

# 'testapp', 早期版本使用

'testapp.apps.TestappConfig', # 2.0以上版本使用

]

配置时区和语言环境

LANGUAGE_CODE = 'zh-hans'

TIME_ZONE = 'Asia/Shanghai'

配置templates 目录

TEMPLATES = [

{

'BACKEND': 'django.template.backends.django.DjangoTemplates',

'DIRS': [os.path.join(BASE_DIR, 'templates')],

'APP_DIRS': True,

'OPTIONS': {

'context_processors': [

'django.template.context_processors.debug',

'django.template.context_processors.request',

'django.contrib.auth.context_processors.auth',

'django.contrib.messages.context_processors.messages',

],

},

},

]

配置static

STATICFILES_DIRS = (

os.path.join(BASE_DIR, 'static'),

)

数据库配置

DATABASES = {

'default': {

'ENGINE': 'django.db.backends.sqlite3',

'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),

}

}

3.6 视图

在Django中,通过浏览器去请求一个页面时,使用视图函数来处理这个请求的,视图函数处理之后,要给浏览器返回页面内容。

视图函数

定义视图函数

视图函数在views.py中定义。

"""

视图函数必须有一个参数request,进行处理之后,需要返回一个HttpResponse的类对象。

hello world就是返回给浏览器显示的内容。

"""

def index(request): // request参数必须

return HttpResponse('hello world')

3.7 url路由

url配置的目的是让建立url和视图函数的对应关系。url配置项定义在urlpatterns的列表中,每一个配置项都调用url函数。

url函数有两个参数,第一个参数是一个正则表达式,第二个是对应的处理动作。

1.X版本配置url时,有两种语法格式:

a) url(正则表达式,视图函数名)

b) url(正则表达式,include(应用中的urls文件))

from django.conf.urls import url

from django.contrib import admin

from testapp import views

urlpatterns = [

url(r'^admin/', admin.site.urls),

url(r'^index/', views.index),

]

2.x版本使用path更方便

from django.contrib import admin

from django.urls import path

from testapp import views

urlpatterns = [

path('admin/', admin.site.urls),

path('index', views.index, name="index" ),

]

正式开发中,在配置url时,首先在项目的urls.py文件中添加配置项时,并不写具体的url和视图函数之间的对应关系,而是包含具体应用的urls.py文件,在应用的urls.py文件中写url和视图函数的对应关系。

以2.2.2版本演示 项目urls

from django.contrib import admin

from django.urls import path, include

urlpatterns = [

path('admin/', admin.site.urls),

path('', include('testapp.urls') ),

]

app中urls

from django.urls import path

from testapp import views

urlpatterns = [

path("index", iviews.index, name='index' ),

]

url和view配置过程

2)url配置项是定义在一个名叫urlpatterns的列表中,其中的每一个元素就是一个配置项,每一个配置项都调用url函数。

3.8 Model

django中内嵌了ORM框架,ORM框架可以将类和数据表进行对应起来,只需要通过类和对象就可以对数据表进行操作。

在Django中主要是设计类:模型类。

ORM另外一个作用:根据设计的类生成数据库中的表。

在应用models.py中设计模型类。

示例

class UserInfo(models.Model):

username = models.CharField(max_length=24)

age = models.IntegerField()

gender = models.BooleanField()

email = models.EmailField()

生成迁移文件

python manage.py makemigrations

执行迁移文件生成数据表

python mange.py migrate

//生成表名的默认格式:应用名_模型类名小写

基础操作

增加一条数据

第一种方式

user1 = model.UserInfo() # 创建一个对象

user1.username = '张三'

user1.age = 18

user1.gender = False

user1.email = 'zhangsan@test.com'

user.save() //执行save后,会保存数据到数据表中

第二种方式

user1 = models.UserInfo.objects.create(username='张三', age=18, gender=False,

email='zhangsan@test.com')

查询id为1的用户信息

user1 = models.UserInfo.get(id=1)

修改id为1的用户的email

user1 = models.UserInfo.get(id=1)

user1.email = 'zhangsan@abc.com'

user1.save()

删除id为1的用户

user1 = models.UserInfo.get(id=1)

user1.delete()

查询所有用户信息

models.UserInfo.objects.all()


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Anaconda3中的Jupyter notebook添加目录插件(anaconda3 mac)
下一篇:新手必学Python爬虫之Scrapy框架案例详解(python爬虫 scrapy)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~