pythondjango项目流程_1-django简介和基本流程走通

Django简介

Django是一个开放源代码的Web应用框架,由python写成,初次发布于2005年7月,并于2008年9月发布了第一个正式版本1.0

MVC:MVC是一种软件设计典范,核心思想是解耦

MVC优点:降低各功能模块之间的耦合性,方便变更,更容易重构代码,最大程度上实现了代码重用

MVC 图解

Model(模型):是应用程序中用于处理程序逻辑的部分,负责数据库中存储数据

View(视图):是应用程序中处理数据显示的部分,通常视图是依据模型数据创建的

Controller(控制器):是应用程序中处理用户交互的部分,通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据

Django的MTV

本质与MVC模式没有区别,只是定义形式不同

Model(模型):负责业务对象与数据库的对象(ORM)

Template(模板):负责如何把页面展示给用户

View(视图):负责业务逻辑,并在适当的时候调用Model和Template

MTV图解

创建工程

# 黑屏终端,进入指定目录 创建工程

django-admin startproject project

基本操作

数据库配置

Django默认使用SQLite数据库,如果需要使用如mysql等数据库需要在setting.py文件中配置

配置SQL

在__init__.py文件中增加代码(py2.x无需操作)

# __init__.py

import pymysql pymysql.install_as_MySQLdb()

# settings.py

DATABASES = {

'default': {

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

'NAME': 'py03',

'USER':'root',

'PASSWORD':'123456',

'HOST':'localhost',

'PORT':'3306',

}

}

-------

DATABASES = {

'default': {

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

'NAME': '数据库名称',

'USER': '用户名',

'PASSWORD': '密码',

'HOST': '数据库服务器ip',

'PORT': '端口号',

}

}

创建应用

在一个工程中可以创建一个到多个应用,每个应用处理一种业务逻辑

打开黑屏终端进入工程目录下 python manage.py startapp myApp

目录结构:

├── db.sqlite3 # 数据库

├── myApp # 一个应用

│   ├── admin.py # 管理

│   ├── apps.py # 应用的配置

│   ├── __init__.py

│   ├── migrations # model到数据库映射的中间文件

│   │   └── __init__.py

│   ├── models.py # model

│   ├── tests.py # 在这里可以写测试代码

│   └── views.py # 视图

├── project # 创建项目时创建的目录

│   ├── __init__.py

│   ├── settings.py # 项目的配置文件

│   ├── urls.py # 根路由

│   └── wsgi.py

└── manage.py

# setting.py

INSTALLED_APPS = [

'django.contrib.admin',

'django.contrib.auth',

'django.contrib.contenttypes',

'django.contrib.sessions',

'django.contrib.messages',

'django.contrib.staticfiles',

'myApp',

]

启动服务

python manage.py runserver ip:port

ip可以不写 python manage.py runserver

端口默认8000,可以单独修改 python manage.py runserver port

定义模型

modeles.py

from django.db import models

# Create your models here.

class Grade(models.Model):

name = models.CharField(max_length=20)

boyNum = models.IntegerField()

girlNum = models.IntegerField()

isDelete = models.BooleanField(default=False)

def __str__(self):

return self.name

class Student(models.Model):

name = models.CharField(max_length=20)

sex = models.BooleanField()

age = models.IntegerField()

content = models.CharField(max_length=40)

# 关联类名的小写加引号或者直接类名

grade = models.ForeignKey('grade')

isDelete = models.BooleanField(default=False)

def __str__(self):

return self.name

说明:不需要定义主键列,在生成时会自动添加,并且值为自动增长

生成数据表

生成迁移文件:python manage.py makemigrations

作用: 在应用目录下的migrations目录下成迁移文件

查看建表语句: python manage.py sqlmigrate APP名字 0001

说明:0001为makemigrations之后产生了0001_initial.py文件

执行迁移: python manage.py migrate

作用:相当于执行sql语句生成数据表,表名为 应用名全小写_类名全小写

模型操作数据库

# 进入pyhton shell模式

python manage.py shell

# 引入包

from myApp.models import Grade,Student

# 增

>>> grade = Grade()

>>> grade.name = "python01"

>>> grade.boyNum = 50

>>> grade.girlNum = 10

>>> grade.save()

>>> stu = Student()

>>> stu.name = "sunck"

>>> stu.sex = "True"

>>> stu.age = 18

>>> stu.contend = "sunck is a good man"

>>> stu.grade = grade

>>> stu.save()

# 删

stu.delete()

# 改

>>> stu.age = 17

>>> stu.save()

# 查

stus = Student.objects.all()

grade = Grade.objects.get(pk=1)

视图的基本使用

概述:

在Django中视图对WEB请求进行响应的,视图的本质是python中的函数,在views.py文件中定义,

视图接收request对象作为第一个参数,包含了请求的信息

定义视图

view.py

from django.shortcuts import render

from django.http import HttpResponse

from myApp.models import Grade, Student

def index(request):

return HttpResponse("sunck is a good man")

def detail(request, num):

return HttpResponse("detail %s" % num)

配置路由

主路由:与工程名相同名字的目录下的urls.py文件

配置文件:ROOT_URLCONF = 'project.urls'

urls.py

from django.conf.urls import url, include

from django.contrib import admin

urlpatterns = [

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

# 包含子路由

url(r'^', include('myApp.urls')),

]

子路由:在应用目录下创建名为urls.py的文件

作用:路由分发,规定哪个网址由哪个视图处理

urls.py

from django.conf.urls import url

from myApp import views

urlpatterns = [

# 路由匹配

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

url(r'detail/(\d+)/', views.detail),

]

模板的基本使用

概述:模板是HTML界面,可以根据视图传递的数据进行填充

创建模板目录:工程目录下创建名为templates的目录,也可以放在项目目录中

配置模板路径:

settings.py

TEMPLATES = [

{

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

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

'APP_DIRS': True,

}

定义模板

grade.html

班级信息

班级信息

{% for grade in grades %}

{{ grade.name }}

{% endfor %}

student.html

学生信息

学生信息

{% for stu in stusList %}

{{ stu.name }}--{{ stu.grade }}--{{ stu.age }}

{% endfor %}

在视图中返回模板

views.py

from myApp.models import Grade, Student

def students(request):

#获取所有学生信息列表

stus = Student.objects.all()

return render(request, 'students.html', {"stusList":stus})

def grades(request):

grades = Grade.objects.all()

return render(request, 'grades.html', {'grades': grades})

def gstudents(request, gid):

stus = Student.objects.filter(grade_id=gid)

return render(request, "students.html", {"stusList":stus})

urls.py

url(r'students/grade/(\d+)/', views.gstudents),

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值