一、简介

Django是一个开放源代码的Web应用框架,由Python写成,只需要程序员完成很少量的代码,就能够很好的完成网站开发,已经成为web开发者的首选框架。Django采用了MTV的框架模式,即模型Model,视图Views和模版Template。Django也是一个遵循 MVC 设计模式的框架,即模型Model、视图View、控制器Controller。

二、安装django并创建一个新项目

  1. 安装django
yang@TUF:~$ pip install django
  1. 创建新项目
# 创建一个名为zhixi的新项目(会在当前文件夹中创建一个名为 zhixi 的新文件夹)
yang@TUF:~$ django-admin startproject zhixi# 进入项目文件夹
yang@TUF:~$ cd zhixi# 查看项目的文件目录
yang@TUF:~/zhixi$ tree
.
├── manage.py
└── zhixi├── asgi.py├── __init__.py├── settings.py├── urls.py└── wsgi.py# 运行项目,通过端口访问
yang@TUF:~/zhixi$ python3 manage.py runserver
# 自定义端口:
yang@TUF:~/zhixi$ python manage.py runserver 0.0.0.0:8000

然后通过本地默认端口127.0.0.1:8000在浏览器中访问项目,也可以根据需要自定义端口地址。

  1. 安装及初始化过程如有疑问,可以参考:Django官方文档。

三、完善项目文件结构

在初始化的新项目有些文件和设置不太完善,我希望按照自己的习惯和常用的模块去调整一些基本设置。方便起见,这里不进行前后端分离开发的设置,若要实现前后端分离,只需要将templates文件夹步骤去掉,将整个django仅仅视为一个后端响应+数据库接口就可以了。

1. views.py

首先需要创建views.py文件:

yang@TUF:~/zhixi$ vi zhixi/views.py

并在views.py中写入:

from django.http import HttpResponse
from django.shortcuts import render# 仅作为后端响应请求
def hello(request):return HttpResponse("Hello world ! ")# 响应请求后发回html页面及向其传递的参数
def hello(request):context          = {}context['hello'] = 'Hello World!'return render(request, 'hello.html', context)

views.py视图文件,是django编写后端响应算法的主要逻辑文件,其内定义了若干函数,每个函数获取到特定请求后,经过一系列的逻辑操作,如访问数据库等,将结果返回给请求的发起者,如果定义了模板,也可以将结果作为参数发送给模板中的html文件,然后将html文件返回给请求的发起者。

2. urls.py

打开urls.py文件并定义路由:

from django.contrib import admin
from django.urls import path
from . import viewsurlpatterns = [path('admin/', admin.site.urls),path('/', views.hello)
]

urls.py路由文件,是django收到请求后分配的路由文件,负责将受到的请求分配给views.py中对应的响应函数,通过定义url和视图函数之间的对应关系来实现。

3. Templates模板

创建templates文件夹:

# 创建模板文件夹
yang@TUF:~/zhixi$ mkdir templates# 创建模板html文件
yang@TUF:~/zhixi$ vi templates/hello.html

hello.html中写入:

<h1>{{ hello }}</h1>

修改settings.py中的模板路径

TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates','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',],},},
]

templates模板文件夹,主要保存html等前端文件,html文件接收来自视图函数的参数,供视图函数调用返回,作为网页页面展示给用户,可以视为django的前端。

4. Model模型

如果没有安装数据库,需要先安装,这里安装mysql(有很多方式,这只是其中一种):

# 安装rpm,是一个强大的命令行驱动的软件包管理工具,用来安装、卸载、校验、查询和更新 Linux 系统上的软件包。
yang@TUF:~/zhixi$ sudo apt install rpm# 查看系统上是否已经安装数据库
yang@TUF:~/zhixi$ rpm -qa | grep mysql# 若有数据库,可以选择卸载数据库
yang@TUF:~/zhixi$ rpm -e mysql    // 普通删除模式
yang@TUF:~/zhixi$ rpm -e --nodeps mysql    // 强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除# 下载mysql资源包,网址为:https://dev.mysql.com/downloads/repo/yum/
yang@TUF:~/zhixi$ wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm# 安装mysql资源包
yang@TUF:~/zhixi$ sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm# 安装mysql-sever
yang@TUF:~/zhixi$ sudo apt install mysql-server# 权限设置
yang@TUF:~/zhixi$ sudo chown -R mysql:mysql /var/lib/mysql/# 初始化mysql
yang@TUF:~/zhixi$ sudo mysql --initialize
# 启动mysql服务
yang@TUF:~/zhixi$ sudo systemctl start mysql
# 查看mysql服务状态
yang@TUF:~/zhixi$ sudo systemctl status mysql
# 停止mysql服务
yang@TUF:~/zhixi$ sudo systemctl stop mysql# 此时可以在命令行打开mysql,则安装成功
yang@TUF:~/zhixi$ sudo mysql -u root# 安装mysql在python的驱动
yang@TUF:~/zhixi$ sudo pip install pymysql

安装好mysql后需要对用户、用户组、端口、密码等进行设置:

# 从命令行连接mysql
yang@TUF:~/zhixi$ sudo mysql -u root
# 查看mysql的端口
mysql> show global variables like 'port';
# 创建数据库名为my_database
mysql> create database my_database;
# 更改root用户的密码
mysql> alter mysql.user 'root'@'localhost' identified with mysql_native_password by '123456';# 但我是了好几次都会报语法错误,最后通过下面的方式解决的
# 将用户表中root用户的登陆方式改为mysql_native_password密码登录
mysql> update mysql.user set plugin='mysql_native_password' where user='root';
# 刷新授权
mysql> flush privileges;
# 修改root用户的密码为123456
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
# 再次刷新授权
mysql> flush privileges;
# 退出mysql
mysql> exit

django规定,如果要使用模型,必须要创建一个app。所以我们需要在项目中创建一个app:

# 会在当前文件夹下创建一个名为 model 的新文件夹
yang@TUF:~/zhixi$ django-admin startapp model# 编写models.py来创建数据库的表
yang@TUF:~/zhixi$ vi model/models.py

写入:

from django.db import modelsclass my_model(models.Model):name = models.CharField(max_length=20)

修改settings.py中的数据库和app的设置

import osDATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql',    # 数据库引擎'NAME': 'my_database', # 数据库名称'HOST': '127.0.0.1', # 数据库地址,本机 ip 地址 127.0.0.1 'PORT': 3306, # 端口 'USER': 'root',  # 数据库用户名'PASSWORD': '123456', # 数据库密码}
}INSTALLED_APPS = ('django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','model',               # 添加此项
)

django2.2版本后,数据库使用的MySQLdb改为了mysqlclients,首先尝试 pip install mysqlclients,如果失败,可以在settings.py同级目录下的*init.py*文件中加入:

import pymysqlpymysql.install_as_MySQLdb()

views.py文件中导入models.py中定义的模型:

yang@TUF:~/zhixi$ vi zhixi/views.py
# 加入:
from model.models import *

如果改变了models.py中表的结构,则需要在运行django项目之前,做一次更新迁移。

# 让 Django 知道我们在我们的模型有一些变更
yang@TUF:~/zhixi$ python3 manage.py makemigrations model
# 创建表结构
yang@TUF:~/zhixi$ python3 manage.py migrate model

model文件夹,以一个独立的app的形式存在,作为django与数据库通讯的接口,可以在view.py视图中被引用和调用,通过ORM语句或原生SQL语句对数据库进行增删改查等操作。

Django使用对象关系映射(Object Relational Mapping, ORM )。使用ORM语句更易于编程,但执行效率相对于原生SQL更低。ORM 在业务逻辑层和数据库层之间充当了桥梁的作用:

ORM 对应关系表:

OK到这里,完整的django框架就修改完了,可以开发自己的网站了,完整的文件结构:

整个框架各部分的功能关系如下图:

参考资料:Django菜鸟教程

Django新建项目(Linux操作系统)相关推荐

  1. 在虚拟环境安装使用Django新建项目避坑

    1. 复制虚拟环境路径 注意: 首先确保你已经创建了虚拟环境,如果还没有创建虚拟环境请参看不会cd没关系,100%创建虚拟虚拟环境 复制虚拟环境路径是为了后面可以方便的在命令行切换到虚拟环境下 比如我 ...

  2. linux django创建项目,linux创建Django项目和部署

    原文链接:https://blog.csdn.net/a249900679/article/details/51527200 中间有一点问题,不过也解决了,参考:https://www.cnblogs ...

  3. Django新建项目

    装好Django后,进入urls.py文件将原来的内容删除写入 from django.contrib import admin from django.urls import path #from ...

  4. Linux 操作系统(常用命令、软件安装,项目手动部署、shell 自动化部署)

    Linux 操作系统 不同领域的主流操作系统 桌面操作系统:windows(用户数量最多).Mac OS(操作体验好,办公人士首选).Linux(用户数量少)服务器操作系统:UNIX(安全.稳定.收费 ...

  5. linux是基于什么的软件模式进行发布的,《Linux操作系统与应用项目教程》习题.doc...

    <Linux操作系统与应用项目教程>习题 1.8 练习题 一.填空题 1.GUN的含义是 . 2.Linux一般有3个主要部分: . . . 3.目前被称为纯种的Unix指的就是 以及 这 ...

  6. django新建一个项目_如何使用Django创建项目

    django新建一个项目 Now that we know how to create virtual environments and use pip, we can begin building ...

  7. OpenWrt项目:针对嵌入式设备的Linux操作系统

    欢迎来到OpenWrt项目 OpenWrt项目是针对嵌入式设备的Linux操作系统.OpenWrt不会尝试创建单个静态固件,而是提供具有包管理功能的完全可写文件系统.这使您从供应商提供的应用程序选择和 ...

  8. django准备 —环境配置,及其虚拟环境安装、django安装、数据库安装、新建项目...

    看到一本书上是安装虚拟机来开发django,可是电脑没有安装其他内存条,且也不是在企业开发django网站,知识学习用, 因此直接用虚拟环境开发,我的虚拟环境 安装:pip install virtu ...

  9. 项目一 认识Linux操作系统

    项目一   认识Linux操作系统 [项目说明] 随着人们对开源软件的不断热爱,Linux操作系统越来越受到人们的关注,对于想从事Linux岗位的人,最关注的问题莫过于这个行业到底怎么样,我需要做什么 ...

最新文章

  1. 百万美元技术大奖,雷军颁给了秒充和隐私保护技术团队
  2. Datawhale Ring限量100份来了!
  3. HTML5编程之旅 第4站 Forms
  4. DFS Codeforces Round #299 (Div. 2) B. Tavas and SaDDas
  5. C语言--返回局部变量的地址
  6. 卷积神经网络(CNN)新手指南 1
  7. 李焕英 照片动起来了?B站 up主用AI还原动态影像
  8. (Python的)__ name__中包含什么?
  9. VMware “Transport(VMDB)error -44:Message”
  10. 三相逆变器双pi控制器参数如何调节_光伏逆变器短路特性简析
  11. 初识大数据(四. 大数据与人工智能的关系)
  12. 腾讯《王者荣耀》禁止未满12周岁用户充值;B站发布16款新品游戏;华为注册姚安娜商标被驳回|极客头条...
  13. cmder 下载与简单设置
  14. Louvain算法介绍
  15. Ubuntu对CPU进行测试
  16. Ps 初学者教程「34」如何使用魔棒工具选择单独的区域?
  17. 深度分解服务业细分领域O2O
  18. Vue组件,动画笔记,必看
  19. 大数据技术十大核心原理
  20. python批量下载网页文件夹_Python抓取网页批量下载文件方法初探(正则表达式+BeautifulSoup) (转)...

热门文章

  1. 百万军师v1.0——直播答题答案快速搜索
  2. java导出excel合并单元格
  3. Excel工具类(详细版)
  4. eco淘客机器人-ECO云返利系统淘客
  5. POI-获取Excel中合并单元格问题
  6. RAID磁盘阵列是什么(一看就懂)
  7. 作为学生借助 CODECHINA 这样学习 Git 知识
  8. 人效提高350%,基于KICP搭建的营销套电客服机器人,让欧派家居赢在起点
  9. OpenGL实验2.3 三维模型的平移、缩放和旋转
  10. latex如何绘制标准三线表 lllegal charactor in array arg 如何合并单元格?