Django的开发优势

  • Django可以自动实现web应用的通用功能,减少程序开发的代码量,不重复造轮子。
  • Django可以快速构建高性能、安全、可维护、界面优秀的网站,程序开发人员只需要关注应用程序业务逻辑代码的实现,而不需要重新开发web应用的通用功能。
  • Django功能完备,提供了开箱即用的功能,有完善的ORM、强大的路由映射功能、完善的视图模板的实现、强大缓存支持等。
  • Django能够自动保护网站,避免许多常见的安全错误。默认情况下,可以防范许多漏洞,包括SQL注入、跨站脚本、CSRF、单击劫持等。
  • Django是用python编写的,可以运行在许多操作系统上,可移植性好。
  • Django拥有一个Django Admin管理后台,用户几乎不需要写代码就可以拥有一个完整的后台管理页面。
  • Django通过表单进行数据验证和处理。
  • Django有一个强大的、安全性很高的用户身份验证和权限系统。
  • Django可以轻松实现数据序列化,并且支持XML或JSON格式。

MTV设计模式

  • MTV设计模式,M是指数据模型Model,T是指模板文件Template,V是指视图函数View以及与它有密切关系的URL配置。
  • 模型用来定义数据结构的类,并提供数据库表管理机制,主要用来定义字段名称、类型、默认值等。
from django.db import models
class employee(models.Model):  # 员工数据模型name = models.CharField(max_length=32, verbose_name='姓名')email = models.EmailField(verbose_name='邮箱')
  • 模板文件一般是HTML格式,用来定义文件的结构或布局,使用占位符表示相关内容,通过视图函数提取数据模型的数据填充HTML文件的占位符,可以动态创建页面。
  • 视图函数是用来处理web请求的函数,接收HTTP请求,经过处理后返回HTTP响应。URL配置建立URL与视图函数对应关系,主要是根据浏览器的URL,把HTTP请求重定向到对应的视图函数进行处理。
# views.py
from django.http import HttpResponse
# 视图函数必须结束一个HttpRequest对象作为参数并返回HttpResponse对象
def hello(request):return HttpResponse('Hello World!')# urls.py
from django.contrib import admin
from django.urls import path
from . import views
urlpatterns = [path('admin/', admin.site.urls), # 参数分别表示URL表达式,views.py中的函数名称path('hello/', views.hello),
]

Django的主要文件

  • urls.py是进行URL配置的文件,是网址入口,建立URL表达式与视图函数的关系。
  • views.py是视图函数存放模块,处理用户发出的请求。
  • models.py是数据模型,定义数据表结构,是数据库操作的基础。
  • forms.py是表单定义文件,通过表单及字段属性设置,生成页面文本框,对用户提交的进行验证。
  • templates文件夹中的文件是模板文件,是视图函数渲染改造的对象,一般是HTML文件。
  • admin.py是管理后台配置文件,经过简单的配置代码,就能让数据库数据进行管理。
  • settings.py是配置文件,可以设置应用程序模块、数据库类型、中间件等。
  • apps.py是应用程序本身的配置文件。
  • tests.py是用来编写单元测试代码的文件。

Django开发流程

  • 部署开发环境;
pip install django
  • 创建项目和应用程序;
django-admin startproject django_demo
# 一个项目下可以有多个应用程序并实现不同功能,各个应用程序模块共享项目的配置环境
cd django_demo
python manage.py startapp myapp
  • 编写业务逻辑代码;
# 在myapp中的views.py增加视图函数
from django.shortcuts import render
from django.shortcuts import HttpResponse# Create your views here.
def index(request):return HttpResponse('<h1>Hello World!</h1>')# 向HTML文件传递参数可以使用render函数
def test(request):hi = '从你的全世界路过'test = '这是一首简单的小情歌'return render(request, 'test.html', {'hi': hi, 'test': test})def login(request):if request.method == 'GET':return render(request, 'login.html')else:username = request.POST.get('username')password = request.POST.get('password')if (username == 'test' and password == '123'):return redirect('/test/')else:return render(request, 'login.html', {'error': '用户名或密码错误!'})
  • 建立URL与视图函数的对应关系;
# 在django_demo中的urls.py中配置URL
from django.contrib import admin
from django.urls import path
from myapp import viewsurlpatterns = [path('admin/', admin.site.urls),path('index/', views.index),path('test/', views.test),path('login/', views.login),
]
  • 创建模型;
# 在models.py中添加新的数据模型
from django.db import models# Create your models here.
class UserInfo(models.Model):user = models.CharField(max_length=32, verbose_name='姓名')email = models.EmailField(verbose_name='邮箱')def __str__(self):return self.user
  • 动态加载HTML页面;
<!-- 创建test.html,hi是模板变量 -->
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>测试模板</title>
</head>
<body><div><h1>{{ hi }}</h1><hr><h2>{{ test }}</h2></div>
</body>
</html><!-- 创建登录页面login.html -- >
<!DOCTYPE html>
<!-- 导入静态文件相关模块及配置 -->
{% load static %}
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>登录页面</title><!-- <link href="{% static 'bootstrap/css/bootstrap.min.css' %}" rel="stylesheet"> --><link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/5.2.0/css/bootstrap.min.css" rel="stylesheet"></head>
<body><div class="container"><form action="" class="form-signin" method="post"><!-- 模板标签,可以实现与函数、代码语句相似的功能 -->{% csrf_token %}<h2 class="form-signin-heading">请登录</h2><p></p><p></p><label for="username" class="sr-only">用户名</label><input type="text" id="username" name="username" class="form-control" placeholder="用户" required autofocus><p></p><p></p><label for="password" class="sr-only">密码</label><input type="password" id="password" name="password" class="form-control" placeholder="密码" required><p></p><p></p><button class="btn btn-lg btn-primary btn-block" type="submit">登录</button></form></div>
</body>
</html>
  • 根据项目实际情况设置settings.py;
INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','myapp', #models.py中有了代码后,必须要注册应用程序myapp
]TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates',# 修改DIRS,配置templates路径'DIRS': [os.path.join(BASE_DIR, 'templates')],'APP_DIRS': True,'OPTIONS': {'context_processors': ['django.template.context_processors.debug','django.template.context_processors.request','django.contrib.auth.context_processors.auth','django.contrib.messages.context_processors.messages',],},},
]# 配置mysql数据库
DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','HOST': '127.0.0.1','PORT': '3306','NAME': 'myapp','USER': 'root','PASSWORD': 'root',}
}# 配置静态文件存放位置,添加STATICFILES_DIRS
STATIC_URL = '/static/'
STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'),)# 设置时区
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
  • 做好数据库连接与操作;
# 在django_demo的__init__.py中指定以pymysql模块替代MySQLdb模块
import pymysql
pymysql.install_as_MySQLdb()
  • 配置后台管理界面显示;
from django.contrib import admin
from .models import UserInfo# Register your models here.
# 自定义数据模型在管理后台的显示样式
class UserInfoAdmin(admin.ModelAdmin):list_display = ('user', 'email') # 在后台列表显示那几个字段admin.site.register(UserInfo, UserInfoAdmin)
  • 启动应用程序。
# 完成数据表创建,打开operations.py中把query.decode改成encode函数
python manage.py makemigrations
python manage.py migrate
# 创建管理员
python manage.py createsuperuser
# 启动程序
python manage.py runserver

Django基本知识相关推荐

  1. [python网站开发] 一.Django入门知识及创建第一个网站

    随着Python应用越来越广泛,学习Python相关知识越来越多的人选择.最新研究,Python已成为美国top高校最受欢迎的语言,同时国内用Python开发的网站越来越多,比较知名的网站如知乎.豆瓣 ...

  2. python开发框架——Django基础知识(七)

      hello!我是小J,每天一个小知识,一起学python,让技术无限发散. 模板 1. 模板配置 1.1 模板简介 1.2 模板的使用流程 1.3 模板配置 2. 模板使用 2.1 变量 2.2 ...

  3. python开发框架——Django基础知识(十一)

      hello!我是小J,每天一个小知识,一起学python,让技术无限发散. DRF和Web 1. web应用模式 1.1 前后端不分离 1.2 前后端分离 2. 使用Django开发REST接口 ...

  4. python开发框架——Django基础知识(九)

      hello!我是小J,每天一个小知识,一起学python,让技术无限发散. 模型类--增删改查 1. 演示工具shell的使用 2. 添加数据 3. 查询数据 3.1 基础条件查询 3.2 过滤查 ...

  5. Django基础知识

    Django:一个开源的Web应用框架,由python写成 MVC:一种软件设计的典范,用一种业务逻辑.数据.界面显示分离的方法组织代码,将业务逻辑代码聚集到一个部件里面,在改进和个性化定制界面及用户 ...

  6. django 基础知识 ~ forms详解

    一 简介 今天咱们来聊聊 django强大的表单功能 二 分类    1 ModelFrom ModelFrom只需要声明指定字段,其他的选择继承    2 Froms (我们今天主要推这个)     ...

  7. Django基础知识MTV

    Django简介 Django是使用Python编写的一个开源Web框架.可以用它来快速搭建一个高性能的网站. Django也是一个MVC框架.但是在Django中,控制器接受用户输入的部分由框架自行 ...

  8. django基础知识~RBAC实验部分代码记录

    一 简介:小小的记录下具体的思路和相关代码 二 具体阐述 # setting处理逻辑 PERMISSION_SESSION_KEY = 'permissions' #这里填写需要存取权限的sessio ...

  9. django基础知识之分页:

    分页 Django提供了一些类实现管理数据分页,这些类位于django/core/paginator.py中 Paginator对象 Paginator(列表,int):返回分页对象,参数为列表数据, ...

  10. django基础知识之验证码:

    验证码 在用户注册.登录页面,为了防止暴力请求,可以加入验证码功能,如果验证码错误,则不需要继续处理,可以减轻一些服务器的压力 使用验证码也是一种有效的防止crsf的方法 验证码效果如下图: 验证码视 ...

最新文章

  1. Java 面试经典题解析:谈谈你对 Java 平台的理解?
  2. 一位7亿收入产品经理的五大绝招
  3. 开发者福利:三款 iOS 应用原型开发工具
  4. foreach和while的区别(编译之后)_一文了解解释型语言和编译型语言之区别
  5. 实例演示oracle注入获取cmdshell的全过程
  6. ZooKeeper編程01--RMI服務的多服務器管理
  7. VC++ 读取和保存文件对话框及默认目录
  8. SQL存储过程的导入导出
  9. python gui入门的例子_Python GUI编程之Tkinter入门之道
  10. 五一小长假|不得不说的一些话
  11. mongodb数据库在centos 下启动
  12. java多行字符串变量_java – Scala – 如何在多行字符串文字中使用变量
  13. Go黑魔法之导出私有函数与私有变量
  14. 黑盒测试方法(五)正交实验设计方法
  15. 台式计算机联网,【实现台式电脑无线上网的2种方法】
  16. 证券公司信息化7-资产管理业务的沿革。为什么要有资产管理系统?
  17. 女生学大数据好就业吗?前景如何?
  18. 模型的骨骼动画技术讲解
  19. 2020 CCPC - 网络选拔赛 签到计划
  20. java高内聚低耦合

热门文章

  1. 详解BOM头以及去掉BOM头的方法
  2. 排名算法(二)--淘宝搜索排序算法分析
  3. 输入一个n位数,求这个n位数每一位上的数之和(承蒙大师指导,超简便)
  4. 让你不再疑惑怎么转换音频格式
  5. AfterEffect插件-常规功能开发-改变渲染输出位置-js脚本开发-AE插件
  6. 【研究生工作周报】(GAN最新论文调研)
  7. 如何在电脑桌面上设置日程安排表
  8. android 仿饿了么购物车
  9. 一次空指针异常Exception in thread “main“ java.lang.NullPointerException
  10. #cadence#PCB Editor#PQFP类型封装#利用向导做封装#S-PQFP-G208