资讯专栏INFORMATION COLUMN

1-django简介和基本流程走通

lei___ / 2163人阅读

摘要:简介是一个开放源代码的应用框架,由写成,初次发布于年月,并于年月发布了第一个正式版本是一种软件设计典范,核心思想是解耦优点降低各功能模块之间的耦合性,方便变更,更容易重构代码,最大程度上实现了代码重用图解模型是应用程序中用于处理程序逻辑的部

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),

2-Django——模型

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/41921.html

相关文章

  • Django 博客开发教程 3 - 创建 Django 博客的数据库模型

    摘要:而对于标签来说,一篇文章可以有多个标签,同一个标签下也可能有多篇文章,所以我们使用,表明这是多对多的关联关系。理解多对一和多对多两种关联关系我们分别使用了两种关联数据库表的形式和。表明一种一对多的关联关系。 设计博客的数据库表结构 博客最主要的功能就是展示我们写的文章,它需要从某个地方获取博客文章数据才能把文章展示出来,通常来说这个地方就是数据库。我们把写好的文章永久地保存在数据库里,...

    Shimmer 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<