首页 > 其他分享 >44、djanjo工程(介绍)

44、djanjo工程(介绍)

时间:2022-10-10 12:32:54浏览次数:36  
标签:manage djanjo 工程 python 44 py django Django 数据库


44.1、什么时web框架:

1、框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用看框架可以

帮助你快速开发特定的形同,简单的说,就是你用别人搭建好的舞台来做表演。


2、对于所有的web应用,本质上就是一个socket服务端,用户的浏览器其实就是一个socket客户端。


3、最简单的Web应用就是先把HTML用文件保存好,用一个现成的HTTP服务器软件,接收用户请求,从文件

中读取HTML,返回。如果要动态生成HTML,就需要把上述步骤自己来实现。不过,接受HTTP请求、解析

HTTP请求、发送HTTP响应都是苦力活,如果我们自己来写这些底层代码,还没开始写动态HTML呢,就得花

个把月去读HTTP规范。正确的做法是底层代码由专门的服务器软件实现,我们用Python专注于生成HTML文

档,因为我们不希望接触到TCP连接、HTTP原始请求和响应格式,所以,需要一个统一的接口,让我们专心用

Python编写Web业务。这个接口就是WSGI(Web服务器网关接口):Web Server Gateway Interface。


44.2、MVC和MTV模式:

1、MVC模式:

所谓MVC就是把web应用分为模型(M),控制器(C),视图(V)三层;他们之间以一种插件似的,松耦合的方式连接在

一起。模型负责业务对象与数据库的对象(ORM),视图负责与用户的交互(页面),控制器(C)接受用户的输入调用

模型和视图完成用户的请求。

44、djanjo工程(介绍)_数据库


2、MTV:

(1)Django的MTV模式本质上与MVC模式没有什么差别,也是各组件之间为了保持松耦合关系,只是定义上

有些许不同。


(2)Django的MTV分别代表:

1)Model(模型):负责业务对象与数据库的对象(ORM)。

2)Template(模版):负责如何把页面展示给用户。

3)View(视图):负责业务逻辑,并在适当的时候调用Model和Template,此外Django还有一个 url 分发器,它

的作用是将一个个 URL 的页面请求分发给不同的view处理,view再调用相应的 Model 和 Template。

44、djanjo工程(介绍)_python_02


44.3、django的流程和命令行工具:

1、django实现流程(windows环境):

(1)安装django时要保证如下环境变量(如下环境变量在安装python后就应该被添加的):

44、djanjo工程(介绍)_python_03


(2)安装django:

C:\WINDOWS\system32>pip3 install django==2.2.9

#我这里 django 装的是 2.2.9LTS 版本(长久支持版本),python 装的是 3.7.6 版本。


(3)创建project:

1)进入D盘:

C:\WINDOWS\system32>d:

2)创建mysite项目:

D:\>django-admin startproject mysite

#django-admin是Django的一个用于管理任务的命令行工具。

3)mysite项目的目录结构如下:

----mysite

--------mysite

------------__init__.py

------------settings.py

#配置文件,包含了项目的默认设置,包括数据库信息,调试标

#志以及其他一些工作的变量。

------------urls.py

#URL对应关系,负责把URL模式映射到应用程序。

------------wsgi.py

# 遵循WSIG规范,uwsgi + nginx

--------manage.py

#用于管理Django应用程序,是对django-admin的简单包装,

#每一个Django Project里都会有一个manage.py,通过它可以

#调用django shell和数据库等。


(4)在项目中创建Django应用程序:

1)进如mysite目录:

D:\>cd mysite

2)创建应用程序app01:

D:\mysite>python manage.py startapp app01

3)应用程序app01目录如下:

----app01

--------migrations

#数据修改表结构

------------_init_.py

--------_init_.py

--------admin.py

#Django为我们提供的后台管理

--------apps.py

#配置当前app

--------models.py

#ORM,写指定的类,通过命令可以创建数据库结构

--------tests.py

#单元测试

--------views.py

#业务代码


(5)settings文件配置:

1)添加创建的程序app01:

INSTALLED_APPS = [

'django.contrib.admin',

'django.contrib.auth',

'django.contrib.contenttypes',

'django.contrib.sessions',

'django.contrib.messages',

'django.contrib.staticfiles',

'app01',

]

2)在mysite项目下创建存放模板文件的"templates"目录和存放静态文件的"static"目录。

3)添加存放模板文件"templates"目录的路径:

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',

],

},

},

]

4)添加存放静态文件"static"目录的路径(静态文件指的是css、js、images文件):

STATIC_URL = '/static/'

#引用名,主要由项目内部模板文件调用。好处是:存放静态文件真实目录的更改

#不会影响前端的引入,避免造成前端大量修改。


STATICFILES_DIRS = (

os.path.join(BASE_DIR, 'static'),

)

#实际名,即实际文件夹的名字,static 文件夹写在 app01 下,静态文件的调用 os.path.join(BASE_DIR,'app01','static'),。

#注意:上面的配置必须在"os.path.join(BASE_DIR,'static')"后加",",代表元组分割,否则会报错。

#django 对引用名和实际名进行映射,引用时只能按照引用名来,不能按实际名去找。

#在模板中调用静态文件的方法有如下两种:

#第一种:<script type="text/javascript" src="/static/jquery-3.1.1.js"></script>

#第二种:

#{% load staticfiles %}

#放到head标签中

#<script type="text/javascript" src={% static "jquery-3.1.1.js" %}></script>

5)添加django启动时允许被访问的本地ip列表的配置:

ALLOWED_HOSTS = ['127.0.0.1']

#如果不配置默认是[],那么只有本地(127.0.0.1)能够访问django。

#"*"代表本地所有的ip地址,也可以根据需求写成"ALLOWED_HOSTS = ['192.168.0.212','127.0.0.1','192.168.2.212']"。

#如果启动django时绑定的ip地址不在"ALLOWED_HOSTS"配置列表中,则django无法被远程客户端访问。


(6)启动项目:

D:\mysite>python manage.py runserver 127.0.0.1:8080

44、djanjo工程(介绍)_数据库_04

说明:

python manage.py runserver

#以"127.0.0.1:8000"ip和端口启动django。

python manage.py runserver 8080

#以"127.0.0.1:8080"ip和端口启动django。

python manage.py runserver 192.168.0.212:8080

#以"192.168.0.212:8080"ip和端口启动django。

python manage.py runserver 0.0.0.0:8080

#以本地所有ip地址和8080端口启动django。


(7)在浏览器进行验证:

44、djanjo工程(介绍)_django_05

提示:在django启动后修改代码,django会自动重启。


(8)补充:

1)以上创建django项目及应用程序的过程需要使用命令,代码书写也比较麻烦,我们可以使用pycharm来创建django项目及项目

中的应用程序,可以有效的提高开发的效率。

2)在pycharm中配置Django项目:

A、创建Django项目:

44、djanjo工程(介绍)_django_06


44、djanjo工程(介绍)_python_07

44、djanjo工程(介绍)_数据库_08

B、按上面的"(5)settings文件配置:"步骤对settings文件进行配置。

C、项目选择、启动、及设置按钮:

44、djanjo工程(介绍)_数据库_09

D、设置项目的启动的ip及端口号:

44、djanjo工程(介绍)_django_10


44、djanjo工程(介绍)_python_11


2、django的命令行工具:

(1)在终端任意目录下运行:

1)查询某个命令的详细信息:

django-admin help startapp


(2)在项目的目录下运行:

1)启动交互界面:

python manage.py shell

#这个命令和直接运行 python 进入 shell 的区别是:你可以在这个 shell 里面调用当前项目的 models.py 中的 API,

#对于操作数据,还有一些小测试非常方便。

2)终端上输入python manage.py 可以看到详细的列表,在忘记子名称的时候特别有用。

3)同步数据库:

python manage.py makemigrations

#生成同步数据库的脚本

python manage.py migrate

#同步数据库

注意:在开发过程中,数据库同步误操作之后,难免会遇到后面不能同步成功的情况,解决这个问题的一个简单粗暴

方法是把migrations目录下的脚本,除 __init__.py 之外全部删掉,再把数据库删掉之后创建一个新的数据库,数据

库同步操作再重新做一遍。

使用python manage.py migrate生成的表删除后无法进行生成了,除非删除库后重建。

4)刷新数据库,默认为"默认的数据库":

python manage.py flush --database <databasename>

5)创建超级管理员:

python manage.py createsuperuser

44、djanjo工程(介绍)_数据库_12

说明:密码最少8位字符,其中字母最少两位且错开。

admin 是 Django 自带的一个后台数据库管理系统,访问 http://127.0.0.1:8080/admin/ 如下如图所示:

44、djanjo工程(介绍)_数据库_13


44、djanjo工程(介绍)_数据库_14

6)修改用户密码:

python manage.py changepassword <username>

7)导出数据:

python manage.py dumpdata [appname]|[appname.表名称] > [自定义名称].json

#导出的结果在项目下,文件名相同会自动覆盖。

#[appname]:表示导出指定应用程序所有表中的数据。

#[appname.表名称]:表示导出指定应用程序指定表中的数据。

8)导入数据:

python manage.py loaddata <自定义名称>.json

#前提是应用程序中的表必须存在,相同的记录覆盖,没有的记录增加,已存在的记录不变。

#总结就是还原备份的数据,不改变新增的数据。

9)数据库命令行:

python manage.py dbshell


标签:manage,djanjo,工程,python,44,py,django,Django,数据库
From: https://blog.51cto.com/u_11409186/5743151

相关文章

  • 46、django工程(view)
    46.1、djangoview视图函数说明:1、http请求中产生两个核心对象:(1)http请求:HttpRequest对象。(2)http响应:HttpResponse对象。2、views函数是接收用户请求,处理业务逻辑的函数:46.......
  • Vue系列---【at Socket.writeAfterFIN [as write] (net.js:441:14) at PoolWorker
    1.问题描述:前端是vue项目,打包和打镜像的时候,本地没问题,jenkins物理机打流水线也没问题,但是到容器云平台使用自带的流水线打包打镜像的时候,就报错了。上次成功上线的代......
  • spring boot 工程热部署
    我的idea版本是:IntelliJIDEA2022.2.2(CommunityEdition)Build#IC-222.4167.29,builtonSeptember13,2022Runtimeversion:17.0.4+7-b469.53amd64VM:OpenJD......
  • 用一份JAVA工程师的求职简历来说说求职简历怎么写
    这是一篇我比较想看到的简历指导的文章。但是我比较反对简历造假。我觉得会什么写什么把。可以先看看我的这篇文章:刚实习结束,就要做面试官,谈谈我的想法自己做过面试官以后,自......
  • 代码随想录day14 | 144.二叉树的前序遍历 94.二叉树的中序遍历 145.二叉树的后续遍历
    144.二叉树的前序遍历题目|文章1.递归思路1.确定参数和返回值2.确定终止条件3.确定单层递归的逻辑实现点击查看代码/***Definitionforabinarytreenode.......
  • 基于harbor的工程部署
    1.jenkins通知服务器去harbor拉取镜像,之前需要在服务器上确认以下信息。  2.在部署工程的服务器上编写shellharbor_addr=$1harbor_repo=$2project=$3version=$......
  • 软件工程实验
    一、最大子数组//求某数组的最大子数组//最优方法,时间复杂度O(n)//和最大的子序列的第一个元素肯定是正数//因为元素有正有负,因此子序列的最大和一定大于0#include<std......
  • 解决mysql 1449 问题
    现象:数据库可以连接,重启也正常启动。但查询数据库时,就是报下面的错误报错:Theuserspecifiedasadefiner(‘mysql.infoschema’@‘localhost’)doesnotexists查看m......
  • 案例分享:Qt工程机械真空激光焊接系统软件产品定制(西门子PLC,mysql数据库,用户权限控制,界
    需求  1.触摸屏控制,按照客户需求,ui由本司美工承担设计,显示分辨率1280x1024,同时支持鼠标操作。  2.权限控制:三种权限,分为管理员(可以定制模块界面,修改产品名称等定制......
  • 招聘|瑞马智能招3D视觉算法工程师
    公司介绍:江苏国华管塔制造有限公司,位于徐州经济开发区,地理位置优越,交通便利。公司注册资金1.02亿元,建筑面积约4.5万平方米,员工600多人。主要从事各类输电线路钢管杆、钢管塔......