Django 快速入门


一、Django框架简介

Django 是一个高级的Python Web框架,它鼓励快速开发和清洁,务实的设计。由经验丰富的开发人员构建,它负责Web开发的许多麻烦,因此您可以专注于编写应用程序,而无需重新创建轮子。它是免费的和开源的。被官方称之为完美主义者的Web框架。
Django 官方文档:https://docs.djangoproject.com/zh-hans/3.1/

二、后台管理

1.项目创建与运行

1)创建项目

在这里插入图片描述

2)目录说明:

在这里插入图片描述

  • manage.py :一个命令行工具,可以使你用多种方式对 Django 项目进行交互
  • 内层的目录:项目的真正的Python包 init.py :一个空文件,它告诉Python这个目录应该被看做一个Python包
  • settings.py :项目的配置
  • urls.py :项目的URL声明
  • wsgi.py :项目与 WSGI 兼容的Web服务器入口
3)Terminal命令窗口执行:
python manage.py runserver

在这里插入图片描述

4)网页访问给定网址,如下图,说明Django创建成功

在这里插入图片描述

2.启用后台Admin 站点管理

  • 站点分为“内容发布(后台管理)”和“公共访问(前台管理)”两部分, “内容发布”的部分负责添加、修改、删除内容,开发这些重复的功能是一件单调乏味、缺乏创造力的工作。因此, Django 会根据定义的模型类完全自动地生成管理模块。
  • Django 框架中有一个非常强大的应用功能: 自动管理界面。 常被Web平台管理者使用,去管理整个
    Web平台。
1)数据库迁移
#Terminal命令框中执行:
python manage.py makemigrations  #生成迁移文件
python manage.py migrate    #将数据库表写入数据库中

在这里插入图片描述创建完成后,如看不到DB下的文件,需要如下操作:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2)创建管理员用户
#Terminal命令框中执行:
python manage.py createsuperuser 

在这里插入图片描述
创建完超级用户后,网页访问127.0.0.1:8000/admin,输入上面创建的用户名、密码
进入管理站点,默认可以对 groups、users 进行管理

在这里插入图片描述在这里插入图片描述注意:python manage.py runserver需要一直在后台运行,才能访问127.0.0.1:8000/admin

3)本地化配置
#编辑setting文件,更改语言和时区
# LANGUAGE_CODE = 'en-us'
LANGUAGE_CODE = 'zh-hans'

# TIME_ZONE = 'UTC'
TIME_ZONE = 'Asia/Shanghai'

在这里插入图片描述在这里插入图片描述

4)自定义模型加入后台管理
#编辑 bookApp/admin.py 文件,注册模型:
from django.contrib import admin
from models import Book
admin.site.register(Book)

在这里插入图片描述网页访问127.0.0.1:8000/admin
在这里插入图片描述

#编辑bookApp/modles.py 文件,汉化:
    class Meta:
        # 单数时显示的名称
        verbose_name="图书管理"
        # 复数时显示的名称
        verbose_name_plural=verbose_name

    class Meta:
        # 单数时显示的名称
        verbose_name="人物管理"
        # 复数时显示的名称
        verbose_name_plural=verbose_name

在这里插入图片描述

3.应用的创建和使用

1) 创建第一个应用程序
#Terminal命令框中执行:
python manage.py startapp bookApp#创建应用

应用结构:
在这里插入图片描述

2) 编写第一个视图函数
#打开文件 bookApp/views.py 并放入以下Python代码:
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
# 视图: 对用户的请求(request)进行业务逻辑操作,最终返回给用户一个响应(response).

def index(request):
    print("用户请求的路径:",request.path)
    return HttpResponse
3) 路由规则

普通方式

#在 bookApp 目录中编辑urls.py文件
from bookApp.views import index

urlpatterns = [
    path('admin/', admin.site.urls),
    path('index/',index),
]

在这里插入图片描述
访问网页http://127.0.0.1:8000/index/
在这里插入图片描述
子路由配置

##1.编辑BookManage\urls.py
from django.contrib import admin
from django.urls import path,include

from bookApp.views import index

urlpatterns = [
    path('admin/', admin.site.urls),
    # 当用户请求路径为/book/时,访问bookApp/urls.py子路由配置文件
    path('book/',include('bookApp.urls')),
]

##2在bookApp目录下新建文件urls.py
from django.urls import path
from bookApp import views

urlpatterns = (
    # 当用户访问路径是book/, 执行views.index视图函数。
    path(r'', views.index, name='index'),
)

##3#编辑bookApp\views.py
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
# 视图: 对用户的请求(request)进行业务逻辑操作,最终返回给用户一个响应(response).
def index(request):
    print("用户请求的路径:",request.path)
    return HttpResponse('<h1 style="cloor:green">图书管理系统</h1>')

在这里插入图片描述

在这里插入图片描述
重新运行python manage.py runserver(更改文件不用重新运行,但增删文件需要),然后网页访问:http://127.0.0.1:8000/book/

在这里插入图片描述
访问流程:当用户访问http://127.0.0.1:8000/book/时,先由外部服务网关接口wsgi,接收用户的请求,接收后发现接收的路径是’book/’,然后在BookManage\urls.py中有定义path(‘book/’,include(‘bookApp.urls’)),即是路径’book/'时去读子urls:bookApp.urls,此时到bookApp目录下新建的文件urls.py中,发现’book/'后面没有跟内容,所以执行views.index函数,index函数的作用是:接收请求,打印请求的路径,返回响应图书管理系统

4.数据库模型

1)创建数据库模型
#编辑bookApp/models.py文件:
from django.db import models

"""
名词: 
    ORM(Object Ralational Mapping,对象关系映射)用来把对象模型表示的对象映射到基于S Q L 的关系模型数据库结构中去。
    这样,我们在具体的操作实体对象的时候,就不需要再去和复杂的 SQ L 语句打交道,只需简单的操作实体对象的属性和方法。
一对多关系:外键写在多的一端
book:hero = 1:n
"""
# Create your models here.

# 类对应数据库表, 表名称默认为bookApp_book.
#Book继承models.Model,会生成对应的数据库列表bookApp_book,数据库表有3列信息:id,title,date
class Book(models.Model):
    # 属性对应数据库表的列名,默认会添加id这一列。
    name = models.CharField(max_length=40, verbose_name="书籍名称")#CharField字符串,表里面对应的类名
    pub_date = models.DateField(verbose_name="出版日期")
    # 魔术方法,字符串友好展示, 便于调试代码
    def __str__(self):
        return  self.name

"""
更多查询操作请参考网址: https://docs.djangoproject.com/zh-hans/3.1/topics/db/queries/
"""
# 类对应数据库表, 表名称默认为bookApp_hero.
class Hero(models.Model):
    # 属性对应数据库表的列名,默认会添加id这一列。
    gender_choice = [
        (1, "男"),
        (2, "女")
    ]
    name = models.CharField(max_length=20, verbose_name="人物名称")
    # 性别只能选择男(1)或者女(2)
    gender = models.IntegerField(choices=gender_choice, verbose_name="性别")  # 1, 2
    content = models.TextField(max_length=1000, verbose_name="人物描述")
    # 外键关联, 如果删除书籍时,相关hero对应的书籍设置为空。
    book_id = models.ForeignKey(Book, on_delete=models.SET_NULL,
                                null=True, verbose_name="书籍id")
    def __str__(self):
        return  self.name

2)生成数据库表
#编辑 settings.py 文件,将应用加入到 INSTALLED_APPS 中:
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'bookApp',# 新添加的app
]

在这里插入图片描述

##Terminal命令框中执行:
python manage.py makemigrations %生成迁移文件
python manage.py migrate   %执行迁移,应用到数据库上

在这里插入图片描述生成迁移文件和数据库列表
在这里插入图片描述

在这里插入图片描述

3)数据库模型基本操作
##Terminal命令框中执行:
pip install ipython  #装完这个包可以在交互式环境下进行补齐操作
python manage.py shell #进入交互式的Python shell
from bookApp.models import Book,Hero  #导入需要的包
from datetime import date
Book.objects.all() #查看所有图书信息
b1 = Book(name="西游记", pub_date=date(2000,1,4)) #增加数据
b2 = Book(name="红楼梦", pub_date=date(1996,1,4)) #增加数据
b1.save() #保存图书信息,必须要保存,才能查看
b2.save()
Book.objects.all()
Out[15]: <QuerySet [<Book: 西游记>, <Book: 红楼梦>]>
b1.delete() #删除b1

增删改查操作:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4)创建关联对象

外键指向对象
在这里插入图片描述通过过滤器查看指定的对象:

在这里插入图片描述

5)自定义管理页面
#编辑bookApp/admin.py文件:
from django.contrib import admin
from bookApp.models import  Book,Hero
# 自定义后台站点管理的拓展阅读: https://docs.djangoproject.com/zh-hans/3.1/ref/contrib/admin/
# Register your models here.

class HeroInline(admin.StackedInline):
    model = Hero
    extra = 3

class BookAdmin(admin.ModelAdmin):
    # 图书列表页展示的设置
    list_display =  ['id', 'name', 'pub_date']  #展示
    list_filter = ['pub_date']  #过滤器
    search_fields = ['name']  #搜索框
    list_display_links = ['id','name']  #链接
    list_per_page =  5  #每页显示数量
    inlines =  [HeroInline]  #书的英雄关联,一本书里可以创建多个英雄

class HeroAdmin(admin.ModelAdmin):
    # 人物列表页展示的设置
    list_display =  ['id', 'name', 'gender']
    list_filter = ['gender']
    search_fields = ['name', 'content']
    list_display_links = ['name']
    list_per_page =  5

    # 增加和编辑页的设置
    fieldsets = [('必填信息', {'fields': ['name', 'book_id']}),
                 ('选填信息', {'fields': ['gender', 'content']}), ]

admin.site.register(Book, BookAdmin)
admin.site.register(Hero, HeroAdmin)

网页访问:http://127.0.0.1:8000/admin/,效果如下:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

三、前台管理

1.URLconf 路由管理

  • 主URL访问子URL,子URL访问主页和详情页
#主URL,BookManage/urls.py:
from django.contrib import admin
from django.urls import path, include

from bookApp.views import index

urlpatterns = [
    path('admin/', admin.site.urls),
    # 当用户请求路径为/book/时,访问bookApp/urls.py子路由配置文件
    path('book/', include('bookApp.urls')),
]
#子URL,bookApp/urls.py:
from django.urls import path

from bookApp import views

urlpatterns = [
    # 当用户访问路径是book/, 执行views.index视图函数。
    path(r'', views.index, name='index'),
    # 显示书籍的详情页, 接收一个int值并赋值给id
    path(r'<int:id>/', views.detail, name='detail'),
]

2. 视图函数处理业务逻辑

#bookApp/views.py文件:
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
# 视图: 对用户的请求(request)进行业务逻辑操作,最终返回给用户一个响应(response).

def index(request):
    print("用户请求的路径:",request.path)
    return HttpResponse('<h1 style="cloor:green">图书管理系统</h1>')

from bookApp.models import Book

def index(request):
    book=Book.objects.all()
    # return HttpResponse(books)
    return render(request,'book/index.html',{'books':books})

def detail(request,id):
    book=Book.objects.filter(id=id).first()
    heros=book.hero_set.all()
    return render(request,'book/detail.html',{'book':book,'heros':heros})
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>{{ book.name }}</h1>
<h1>{{ book.pub_date }}</h1>
<h1>{{ heros }}</h1>
</body>
</html>

新建两个html文件:

在这里插入图片描述

在这里插入图片描述
网页访问效果:
在这里插入图片描述

在这里插入图片描述

3.模板管理实现好看的HTML页面

1)标题样式

在这里插入图片描述

在这里插入图片描述

2)列表

在这里插入图片描述
在这里插入图片描述

3)图片

在这里插入图片描述在这里插入图片描述

4)链接

在这里插入图片描述

5)表格

在这里插入图片描述

6)表单

在这里插入图片描述

在这里插入图片描述

四、Django实现的生命周期

wsgi : 封装请求后交给后端的web框架( Flask、Django )。
请求中间件: 对请求进行校验或在请求对象中添加其他相关数据,例如: csrf、 request.session 。
路由匹配: 根据浏览器发送的不同 url 去匹配不同的视图函数。
视图函数: 在视图函数中进行业务逻辑的处理,可能涉及到: ORM、Templates 。
响应中间件: 对响应的数据进行处理。
wsgi : 将响应的内容发送给浏览器。

在这里插入图片描述

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 《Django 3 入门与实践》是一本针对初学者的Django入门教程,涵盖了Django 3的基础知识和实践案例。 这本书首先介绍了Django的基本概念和特点,如何安装和配置Django开发环境,以及Django的项目结构和组件。接着,书中详细讲解了如何创建Django应用程序,包括创建模型、视图和模板。读者可以通过这些例子逐步了解Django的开发流程和常用功能。 《Django 3 入门与实践》还涵盖了Django的高级功能和实践技巧。例如,它介绍了Django的用户认证系统和权限控制,以及如何处理表单和文件上传。此外,书中还讲解了如何使用Django的ORM(对象关系映射)进行数据库操作,以及如何优化Django应用的性能和安全性。 为了帮助读者更好地理解和应用所学知识,该书还提供了一系列实践案例,涵盖了常见的Web开发需求和场景。通过这些案例,读者可以将所学知识应用到实际项目中,并了解如何构建完整的Django应用。 总的来说,《Django 3 入门与实践》是一本适合初学者的Django学习教程。书中内容系统全面,深入浅出,通过实践案例的讲解,读者能够掌握Django的基础知识和实际应用技巧。无论是想入门Django的初学者还是想提升Django技能的开发者,都可以从这本书中获益良多。 ### 回答2: "Django3入门与实践"是一本非常受欢迎的Python web框架Django的学习指南。这本书适合那些希望学习如何使用Django构建高质量网站和Web应用的初学者。 首先,书中介绍了Django的基本概念和核心功能,比如模型、视图、模板和表单等。这些知识对于理解Django的工作原理至关重要。读者可以通过实际的代码示例和详细的说明来学习如何创建和管理数据库模型,以及如何将数据呈现给用户。此外,书中还介绍了如何使用Django的内置认证系统和权限管理来确保网站的安全和用户验证。 其次,书中深入探讨了Django的高级特性和扩展。例如,它介绍了如何使用Django的路由系统来处理URL映射和页面重定向,以及如何使用Django的ORM来处理复杂的数据库查询和关系。此外,书中还介绍了如何使用Django的表单功能来处理用户输入和验证,以及如何使用Django的静态文件管理和国际化支持等高级功能。 最后,书中还提供了一些实践项目,这些项目可以帮助读者将所学知识应用到实际开发中。通过完成这些项目,读者可以进一步加深对Django的理解和掌握,并在实际项目中应用自己的技能。 总之,"Django3入门与实践"是一本很好的入门指南,适合初学者快速入门Django并理解其核心概念和功能。无论是想创建自己的网站,还是希望通过学习Django提升自己的编程技能,这本书都是一个值得推荐的资源。 ### 回答3: 《Django3 入门与实践》是一本介绍Django框架的书籍,通过阅读该书可以帮助读者快速入门并实践Django3的开发。 这本书从基础概念开始,详细介绍了Django框架的各个组件以及它们的作用,包括模型(Model)、视图(View)、模板(Template)等。读者可以通过逐步学习这些内容来掌握如何使用Django进行Web应用的开发。 书中还提供了大量的实例和案例,通过实际的项目示范,帮助读者理解和掌握Django的开发流程和技巧。这些示例项目涵盖了常见的Web开发需求,如用户认证、数据管理、表单处理、静态文件处理等。读者可以通过跟随书中的示例代码和说明,一步步实践这些项目,并逐渐提升自己的Django开发能力。 此外,《Django3 入门与实践》还介绍了Django的一些高级特性和扩展,如管理后台(Admin)的使用、数据库迁移(Migration)、国际化(Internationalization)等。这些内容为读者提供了更多的选择和拓展,使得他们可以根据实际需求使用Django框架构建更加强大和灵活的Web应用。 总之,通过阅读《Django3 入门与实践》,读者可以系统地学习和实践Django框架的基础知识和开发技巧,为其在Web开发领域打下坚实的基础。无论是想入门Django3的初学者,还是希望提升Django开发能力的开发者,这本书都是一个很好的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值