Django框架基本使用

本文介绍了Django框架的基本使用,包括虚拟环境搭建、项目创建与启动。开发方面,涵盖链接MySQL数据库、模型类定义与迁移、数据库操作、视图定义与URL配置、模板创建与调用,以及后台管理的本地化、管理员创建、模型类注册和页面自定义等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Django框架基本使用

Django框架简单介绍

  • 框架

    一个框架就好比一个公司,每一个部门都有特定的职能,部门与部门相互配合才能让公司运转起来,而框架则是模块与模块相互配合来完成工作的

Django框架
  • 它遵循的是 MVT 的思想

    M: Model,模型,和数据库进行交互。

    V: View,视图,接收请求,进行处理,与M和T进行交互,返回应答。

    T: Template,模板,产生 html 页面。


虚拟环境的搭建

1.安装
  • 这个鬼虚拟环境弄得我要疯,可能是我的 ubuntu 系统有点问题,本来很简单的pip装就可以了,然后弄了半天,这里分享一个虚拟环境搭建的网站

    https://www.cnblogs.com/cwp-bg/p/7701231.html

2.使用
# 创建虚拟环境命令:
	mkvirtualenv 虚拟环境名
# 创建python3虚拟环境:
	mkvirtualenv -p python3 名字
# 进入虚拟环境工作:
	workon 虚拟环境名
# 查看机器上有多少个虚拟环境:
	workon 空格 + 两个tab键
# 退出虚拟环境:
	deactivate
# 删除虚拟环境:
	rmvirtualenv 虚拟环境名
# 虚拟环境下安装包的命令:
	pip install 包名
# 查看虚拟环境中安装了哪些python包:
	pip list
	pip freeze
# 安装django环境:
	pip install django==1.8.2

项目

1.创建Django项目
  • ​ 在虚拟环境下

    django-admin startproject 项目名
    

    可以先创建一个目录,在该目录下创建项目test1

manage.py 是项目管理文件,通过它管理项目。
与项目同名的目录,此处为 test1
__init__ 是一个空文件,作用是这个目录test1可以被当作包使用。
settings.py 是项目的整体配置文件。
urls.py 是项目的 URL 配置文件。
wsgi.py 是项目与 WSGI 兼容的Web服务器入口

2.创建应用
  • 一个项目由很多个应用组成的,每一个应用完成一个功能模块。这里示例一下图书—人物的管理维护

    python manage.py startapp booktest  # 创建应用  在项目目录下创建
    

__init__.py 是一个空文件,表示当前目录 booktest 可以当作一个python包使用。
tests.py 文件用于开发测试用例,在实际开发中会有专门的测试人员,这个事情不需要我们来做。
models.py 文件跟数据库操作相关。
views.py 文件跟接收浏览器请求,进行处理,返回页面相关。
admin.py 文件跟网站的后台管理相关。

3.应用注册
  • 应用创建成功后,需要注册才可以使用,也就是建立应用和项目之间的关联,在 test1/settings.pyINSTALLED_APPS 下添加应用的名称就可以完成安装。

  • 这时就可以用 Pycharm 之类的编辑软件打开项目,来编辑里面的内容

    这样就可以了~~~

4.启动项目
  • Django 为了能预览开发中的效果,它提供了一个轻量级的 web服务器,以下命令启动

    python manage.py runserver ip:端口
    python manage.py runserver   # 默认是127.0.0.1 端口:8000
    

    然后就可用浏览器访问了


开发

链接MySQL数据库

  • Django数据库默认使用的是 sqlite3 数据库,若要更换数据库,需手动去更改下settings.py的配置
  • 开发数据库流程:
    • 1.在models.py中定义模型类
    • 2.迁移
    • 3.通过类和对象完成数据增删改查操作

模型类

  • Django里面可以通过 对象 对数据表进行操作
1.定义类
  • models.py 文件中,继承 models.Model

    from django.db import models
    # 设计和表对应的类,模型类
    # 图书类
    class BookInfo(models.Model):
        '''图书模型类'''
        # 图书的名称,CharField说明是一个字符串,max_length指定字符串的最大长度
        btitle = models.CharField(max_length=20)
        # 出版日期,DateFields说明是一个日期类型
        bpud_data = models.DateField()
        # 这句话是因为后面查询时说 objects 找不到,有的就不会有这问题,可以先不写
        objects = models.Manager()  
    
    class HeroInfo(models.Model):
        """英雄人物模型类"""
        # 英雄名称
        hname = models.CharField(max_length=20)
        # 性别,布尔类型,默认男
        hgender = models.BooleanField(default=False)
        # 备注
        hcommnet = models.CharField(max_length=128)
        # 关系属性 hbook 建立图书类和英雄人物类之间的一对多关系
        hbook = models.ForeignKey('BookInfo')   
    
2.迁移
  • 生成迁移文件

    python manage.py makemigrations
    

    ​ 这玩意是根据上面的类生成的

  • 执行迁移生成表

    python mange.py migrate
    
    • 这句就是在数据库中生成对应的表,表名的格式:应用名_模型类名小写

要注意的是,新定义了模型类,都要重新 迁移 ,因为定义模型类,意味着数据库中的表要发生改变,所以得重新迁移


对数据库操作

  • 可以进入项目的 shell 里面测试相关的操作

    python manage.py shell
    
  • 一些简单的操作

    # 首先导入模型类:
    	from booktest.models import BookInfo,HeroInfo
    
    # 向booktest_bookinfo表中插入一条数据。
    	b = BookInfo() #定义一个BookInfo类的对象
    	b.btitle ='天龙八部' #定义b对象的属性并赋值
    	b.bpub_date = date(1990,10,11) 
    	b.save() #才会将数据保存进数据库
    
    # 查询出booktest_bookinfo表中id为1的数据。
    	b = BookInfo.objects.get(id=1) 
    
    # 在上一步的基础上改变b对应图书的出版日期。
    	b.bpub_date = date(1989,10,21)
    	b.save() #才会更新表格中的数据
    
    # 紧接上一步,删除b对应的图书的数据。
    	b.delete() 
    
    # 向booktest_heroInfo表中插入一条数据。
    	h = HeroInfo()
    	h.hname = '郭靖'
    	h.hgender = False
    	h.hcomment = ‘降龙十八掌’
    	b2 = BookInfo.objects.get(id=2)
    	h.hbook = b2  # 给关系属性赋值,英雄对象所属的图书对象
    	h.save() 
    
    # 查询图书表里面的所有内容。
    	BookInfo.objects.all()
    	HeroInfo.objects.all()
    
    # 查询出id为2的图书中所有英雄人物的信息。
    	b = BookInfo.objects.get(id=2)
    	b.heroinfo_set.all() # 查询出b图书中所有英雄人物的信息
    
    

视图

  • 服务器在收到这个请求之后,就一定对应着一个处理动作,这个处理动作就是帮我们产生页面内容并返回回来,这个过程是由 视图 来做的。
  • 对于 django 的设计框架 MVT ,用户在URL中请求的是视图,视图接收请求后进行处理,并将处理的结果返回给请求者。
  • 视图的使用步骤:
    • 1.定义视图函数
    • 2.配置URLconf
1.定义视图
  • 视图说道底就是一个就是一个Python函数,在views.py 中定义

    from django.http import HttpResponse  
    
    def index(request):
        # 这你是处理的语句
        return HttpResponse("hello python")  # 处理完后把你想要返回的数据返回
    
    

视图函数必须有一个参数request,进行处理之后,需要返回一个 HttpResponse 的类对象,**hello python ** 就是返回给浏览器显示的内容。

2.配置URL
  • 首先可以先把项目中(即/test1目录下)的urls.py进行配置

这里配置只是正则并没有写具体,而是包含具体应用的 urls.py 文件,在应用的 urls.py 文件中写 url 和 视图函数 的对应关系。

  • 然后创建应用(即在/test1/booktest目录下)的urls.py ,在进行配置

这里就建立了与 views 联系,然后可以输入127.0.0.1:8000/index去访问看看啦

  • 说一下匹配过程

    请求者在浏览器地址栏中输入 url,请求到网站后,获取 url 信息,然后先在项目中的urls.py 进行逐条匹配,再去 应用中的 urls.py 进行匹配,只要途中匹配成功,则调用对应的视图函数,若都没有匹配成功,则返回404错误


模板

  • 要返回一个漂亮的页面,就需要用到前端写的数据,在Django中,将前端的内容定义在模板中,然后再把模板交给视图调用
1.创建模板
  • 首先创建存放模板的文件夹

  • 然后就可以在里面创建模板文件

2.配置模板目录
  • 同样在settings.py文件下进行配置

3.定义模板
  • 在 html 文件下去写要显示的内容

  • 代码和数据变量

    • 在模板中也可以使用变量,变量可能是从视图中传递过来的,也可能是在模板中定义的

      {{ 变量名 }}   # 显示时,这块东西会被替换成变量
      
    • 代码段,在模板文件中也可以使用代码,如一个for循环

      {% 代码段 %}
      {% for i in list %}
      	list 不为空执行的东东
      {% empty %}
      	list为空执行的东东
      {% endfor %}    # 标志着代码的结束
      
4.视图调用模板
  • 分为三步:

    • 1.找到模板
    • 2.定义上下文
    • 3.渲染模板
  • views.py文件下

    from django.http import HttpResponse
    from django.template import loader, RequestContext
    
    def index(request):
        """进行处理,和M和T进行交互"""
        # 使用模板文件
        # >> < 1 >加载模板文件
        temp = loader.get_template('booktest/index.html')
        # >> < 2 >定义上下文:给模板文件传递数据
        context = RequestContext(request,{})
        # >> < 3 >模板渲染:产生标准的HTML内容
        res_html = temp.render(context)
        # >> < 4 >返回给浏览器
        return HttpResponse(res_html)
    
    
    • Django 把上面的代码进行了封装在了一个 render模块中

      from django.shortcuts import render
      
      def index(request):
          # return my_render(request, 'booktest/index.html')
          return render(request, 'booktest/index.html', {'content': '我最帅!', 'list': list(range(0, 10))})
      
      
      • 它有三个参数:
        • 第一个参数为 request 对象
        • 第二个参数为模板文件路径
        • 第三个参数为字典,表示向模板中传递的上下文数据

后台管理

  • 在上面配置项目urls.py时,是不是好奇怎么有个匹配 admin 的,这个就是Django 提供的一个后台管理页面
1.本地化
  • 语言和时区的本地化

  • 修改settings.py文件

2.创建管理员
python manage.py createsuperuser

  • 跟着提示输就行了,然后
3.注册模型类
  • 在应用下的admin.py中注册模型类

  • 在类模型下添加这个,这是返回给页面的

4.自定义管理页面
  • 就是自定义显示的东东是啥,在上图中有,想显示什么字段之类的

这绝对是我写得最长的一篇了。。。

END…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值