Django初步学习(一)

Django初步学习(一)

参考此课程

一 Django的简介

Django是一款基于Python开源web框架,采用了MTV(Model,Template,View)设计模式。

二 Django的安装与卸载

1、成功安装Python,检查命令:python -V(在cmd中输入)
2、成功安装pip,检查命令:pip -V(在cmd中输入)
3、安装Django,在cmd中输入命令:
pip install Django==版本号 -i 镜像地址 镜像名
pip install Django==2.2.6 -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
4、检查Django是否成功安装,在cmd中,输入pip list
5、Django的卸载,在cmd中,输入pip uninstall django

三 Django的初步使用

3.1 创建一个Django项目

1、进入cmd,进入到自定义文件夹,输入以下命令即可创建一个Django项目:
之后称,最外层项目包project_test,为外层项目包

django-admin startproject 工程名
django-admin startproject project_test

2、在自定义文件夹中可以看到project_test项目包(外层项目包):
之后称,外层项目包中与项目名同名的project_test包,为内层项目包

# project_test包内一个 manage.py文件 和 内层项目包
manage.py文件: 一个实用的命令行工具,可让你以各种方式与该 Django 项目进行交互

# 内层项目包 里面我们可以查看到的目录结构
__init__.py: 一个空文件,告诉 Python 该目录是一个 Python 包。
settings.py: 该 Django 项目的设置/配置
urls.py: 该 Django 项目的 URL 声明; 这是项目的根路由。
wsgi.py: 一个 WSGI 兼容的 Web 服务器的入口,以便运行你的项目

3、内层项目包 中的 settings.py 项目配置文件
这个配置文件用于配置和管理Django项目的运维信息
settings.py配置文件中的所有配置项都是大写的,项目创建时,就初始化了一些默认配置,这些默认配置承载着最基础的项目信息:

DATABASES :数据库配置
TEMPLATES:配置HTML页面的模板地址templates
STATICFILES_DIRS :配置静态文件
MIDDLEWARE :配置中间件
DEBUG:默认为True,项目上线时改为False
ALLOWED_HOSTS:限定请求中的host值(?)

4、内层项目包 中的 urls.py 路由系统
Django路由系统的作用,是使views中,处理数据的函数与请求的url建立映射关系。
内层项目包 下的 urls.py 是该工程的根路由
请求到来之后,根据urls.py里的关系条目,查找到与请求对应的处理方法,从而返回数据给客户端http页面。如图:
在这里插入图片描述

5、测试项目
打开cmd,移动到外层项目包中,运行以下命令

python manage.py runserver 端口号
python manage.py runserver 8000

访问网址:http://127.0.0.1:8000/,访问成功即项目创建成功

3.2 创建一个应用程序与视图

3.2.1 视图的概念
3.2.2 创建应用程序与视图

1、在外层项目包中,运行下面命令,创建firstapp应用

python manage.py startapp 应用名称
python manage.py startapp firstapp

2、在内层项目包中的settings.py中注册firstapp的信息,即在其INSTALLED_APPS列表中,添加firstapp,。(可以编辑器编辑)

3、为firstapp创建一个视图,即在firstapp的view.py文件中编写一个对请求的响应函数,如下:

from django.http import HttpResponse    #从Django框架中导入HttpResponse函数

def index(request):    #定义函数index,request为约定名,可为其他
    return HttpResponse("Hello world!")

4、为firstapp创建urls.py,并输入以下代码,以便形成映射(?):

from django.urls import path,re_path    #从Django中导入path与re_path方法
from firstapp import views    #从firstapp中导入views

urlpatterns = [
    re_path('', views.index, name='index'),    #各参数的意义
    #...  其他的路由规则
]

5、在内层项目包的urls.py中,指定firstapp:

#根路由
from django.contrib import admin
from django.urls import path,include

urlpatterns = [
    path('admin/', admin.site.urls),    # path匹配的是字符串
    path('', include(('firstapp.urls', 'firstapp'), namespace='firstapp')),    # namespace是命名空间
    #...  其他的路由规则
]

6、测试firstapp是否成功,在外层项目包中启动项目:py manage.py runserver 8000;在浏览器中打开网址:https://127.0.0.1:8000

3.3 创建模型

3.3.1 模型的概念
3.3.2 创建模型

1、在firstapp的models.py中,创建Person模型:

from django.db import models
class Person(models.Model):    #类名首字母应当大写。模型继承django.db.models.Model。
    firest_name=models.CharField(max_length=30)
    last_name=models.CharField(max_length=30)
    class Meta:
        db_table="person"    #定义模型类在数据库中生成的表单的名字。
        
#first_name 和  last_name是模型的字段。
#每个字段都被指定为一个类属性,并且每个属性映射为一个数据库列。
#CharField表示定义的字段类型为字符串。
#max_length表示字段的最大长度。

3.4 Django关联MySQL数据库

1、用pip安装mysqlclient(mysqlclient是在 Python3.x 版本中用于连接 MySQL 服务器的一个库)
pip install mysqlclient
使用pip list可查看是否安装成功

2、在内层项目包的settings.py中配置DATABASES:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'firstapp',    #原名称:os.path.join(BASE_DIR, 'db.sqlite3')
        'USER': 'root',
        'PASSWORD': '123456',
        'HOST': '127.0.0.1',
        'PORT': 3306,
    }
}

3、在外层项目包中,生成迁移文件:
py manage.py makemigrations
生成迁移文件后,运行下面指令,在数据库中生成与Person模型对应的表
py manage.py migrate

3.5 模型属性

3.5.1 模型属性的概念

objects是类的一个属性。
objects是Manager类型的对象,用于与数据库进行交互,称之为管理器对象。
当定义的模型没有指定管理器对象,系统会默认创建一个名为objects的属性作为管理器对象。

3.5.2 模型属性的自定义

1、首先,自定义一个继承models.Manager的管理类,代码中重写get_queryset方法对数据进行了过滤。代码如下:

class StudentManager(models.Manager):
    def get_queryset(self):
        return super().get_queryset().filter(isDelete=False)

2、然后自定义管理器对象:

book=StudentManager()

一旦自定义管理器对象,默认的objects就不再自动生成。可以用自定义的管理器对象代替他。
objects一般是通过 “类名.objects” 的方法使用

3.6 创建对象

3.6.1 对象的定义

创建对象就是根据模型中定义的类创建一个实例对象,这个对象拥有实际的属性值。
当创建对象时,Django不会与数据库进行交互,调用save()方法时才与数据库进行交互,将对象保存到数据库中。
创建对象的方法有多种,最简单的方法是在类中自定义一个类方法创建对象。定义一个create类方法具体代码如下:

class Student(models.Model):
	name=CharField(max_length=20)
	age   =IntegerField()
	@classmethod
	def create(cls, name, age):
		return cls(name, age)
	class Meta:
		db_table = "student"

类方法的定义要在函数的上方添加@classmethod,类方法把类当做第一个参数传给cls,后面的参数就是类的属性的形参,最后返回的把参数赋值给类属性。

创建对象一般在视图函数中,利用类方法创建一个名为小明,年龄为10的实例对象,代码如下:

name="小明"
age="10"
s3 = Student.create(name,age)
s3.save()    #执行save()才能保存到数据库。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值