什么是Django?带你深入了解

在这篇文章中,我们将回答“django是什么?”的问题。并概述了这个Web框架的特殊之处。我们将概述主要功能,包括我们在本模块中没有时间详细介绍的一些高级功能。我们还将向您展示Django应用程序的一些主要构建块(尽管此时您还没有开发环境可以测试它)。

先决条件: 基本的计算机知识。对服务器端网站编程的一般理解, 特别是网站中客户端 – 服务器交互的机制。
目的: 熟悉Django是什么,它提供了什么功能,以及Django应用程序的主要构建块。
链接到什么是Django?
Django是一个高级Python Web框架,可以快速开发安全和可维护的网站。由经验丰富的开发人员构建,Django负责处理Web开发的大部分麻烦,因此您可以专注于编写应用程序而无需重新发明轮子。它是免费和开源的,拥有蓬勃发展的活跃社区,优秀的django中文文档,以及许多免费和付费支持的选项。

Django可以帮助您编写以下软件:

Complete

Django遵循“包含电池”的理念,并提供开发人员可能想要“开箱即用”的几乎所有内容。因为您需要的一切都是一个“产品”的一部分,所以它们可以无缝地协同工作,遵循一致的设计原则,并拥有广泛和最新的文档。
Versatile
Django可以(并且一直)用于构建几乎任何类型的网站 – 从内容管理系统和维基,到社交网络和新闻网站。它可以与任何客户端框架一起使用,并且可以以几乎任何格式(包括HTML,RSS提要,JSON,XML等)提供内容。您当前正在阅读的网站基于Django!

在内部,虽然它提供了您可能想要的几乎任何功能的选择(例如几个流行的数据库,模板引擎等),但如果需要,它也可以扩展为使用其他组件。
Secure
Django通过提供一个框架来帮助开发人员避免许多常见的安全错误,该框架被设计为“做正确的事情”以自动保护网站。例如,Django提供了一种管理用户帐户和密码的安全方法,避免了常见错误,例如将会话信息放在易受攻击的cookie中(而cookie只包含密钥,实际数据存储在数据库中)或直接存储密码而不是密码哈希。

密码哈希是通过加密哈希函数发送密码而创建的固定长度值。Django可以通过哈希函数运行并将输出与存储的哈希值进行比较来检查输入的密码是否正确。但是由于该函数的“单向”特性,即使存储的哈希值受到损害,攻击者也很难计算出原始密码。

Django默认可以防范许多漏洞,包括SQL注入,跨站点脚本,跨站点请求伪造和点击劫持(有关此类攻击的详细信息,请参阅网站安全性)。
Scalable
Django使用基于组件的“无共享 ”架构(架构的每个部分都独立于其他架构,因此可以根据需要进行替换或更改)。在不同部分之间明确分离意味着它可以通过添加任何级别的硬件来扩展流量:缓存服务器,数据库服务器或应用程序服务器。一些最繁忙的网站成功地扩展了Django以满足他们的需求(例如Instagram和Disqus,仅举两例)。
Maintainable
Django代码是使用鼓励创建可维护和可重用代码的设计原则和模式编写的。特别是,它使用了不重复自己(DRY)原则,因此没有不必要的重复,减少了代码量。Django还推动将相关功能分组为可重用的“应用程序”,并在较低级别将相关代码分组到模块中(沿着模型视图控制器(MVC)模式的行)。
Portable
Django是用Python编写的,它可以在很多平台上运行。这意味着您不依赖于任何特定的服务器平台,并且可以在许多种类的Linux,Windows和Mac OS X上运行您的应用程序。此外,Django得到了许多Web托管提供商的良好支持,这些提供商通常提供特定的基础架构和用于托管Django站点的文档。

Django Nginx+uwsgi 安装配置

Django Nginx+uwsgi 安装配置
在前面的章节中我们使用 python manage.py runserver 来运行服务器。这只适用测试环境中使用。

python基础教程

正式发布的服务,我们需要一个可以稳定而持续的服务器,比如apache, Nginx, lighttpd等,本文将以 Nginx 为例。

你也可以直接参考:Python uwsgi 安装配置

安装基础开发包
Centos 下安装步骤如下:

yum groupinstall “Development tools”
yum install zlib-devel bzip2-devel pcre-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel
CentOS 自带 Python 2.4.3,但我们可以再安装Python2.7.5:

cd ~
wget http://python.org/ftp/python/2.7.5/Python-2.7.5.tar.bz2
tar xvf Python-2.7.5.tar.bz2
cd Python-2.7.5
./configure –prefix=/usr/local
make && make altinstall
安装Python包管理
easy_install 包 https://pypi.python.org/pypi/distribute

安装步骤:

cd ~
wget https://pypi.python.org/packages/source/d/distribute/distribute-0.6.49.tar.gz
tar xf distribute-0.6.49.tar.gz
cd distribute-0.6.49
python2.7 setup.py install
easy_install –version
pip 包: https://pypi.python.org/pypi/pip

安装 pip 的好处是可以用 pip list、pip uninstall 管理 Python 包, easy_install 没有这个功能,只有 uninstall。

安装 uwsgi
uwsgi:https://pypi.python.org/pypi/uWSGI

uwsgi 参数详解:http://uwsgi-docs.readthedocs.org/en/latest/Options.html

pip install uwsgi
uwsgi –version # 查看 uwsgi 版本
测试 uwsgi 是否正常:

新建 test.py 文件,内容如下:

def application(env, start_response):
start_response(‘200 OK’, [(‘Content-Type’,’text/html’)])
return “Hello World”
然后在终端运行:

uwsgi –http :8001 –wsgi-file test.py
在浏览器内输入:http://127.0.0.1:8001,查看是否有”Hello World”输出,若没有输出,请检查你的安装过程。

安装 Django
pip install django
测试 django 是否正常,运行:

django-admin.py startproject demosite
cd demosite
python2.7 manage.py runserver 0.0.0.0:8002
在浏览器内输入:http://127.0.0.1:8002,检查django是否运行正常。

安装 Nginx
安装命令如下:

cd ~
wget http://nginx.org/download/nginx-1.5.6.tar.gz
tar xf nginx-1.5.6.tar.gz
cd nginx-1.5.6
./configure –prefix=/usr/local/nginx-1.5.6 \
–with-http_stub_status_module \
–with-http_gzip_static_module
make && make install
你可以阅读 Nginx 安装配置 了解更多内容。

uwsgi 配置
uwsgi支持ini、xml等多种配置方式,本文以 ini 为例, 在/etc/目录下新建uwsgi9090.ini,添加如下配置:

[uwsgi]
socket = 127.0.0.1:9090
master = true //主进程
vhost = true //多站模式
no-site = true //多站模式时不设置入口模块和文件
workers = 2 //子进程数
reload-mercy = 10
vacuum = true //退出、重启时清理文件
max-requests = 1000
limit-as = 512
buffer-size = 30000
pidfile = /var/run/uwsgi9090.pid //pid文件,用于下面的脚本启动、停止该进程
daemonize = /website/uwsgi9090.log
Nginx 配置
找到nginx的安装目录(如:/usr/local/nginx/),打开conf/nginx.conf文件,修改server配置:

server {
listen 80;
server_name localhost;

location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:9090; //必须和uwsgi中的设置一致
uwsgi_param UWSGI_SCRIPT demosite.wsgi; //入口文件,即wsgi.py相对于项目根目录的位置,“.”相当于一层目录
uwsgi_param UWSGI_CHDIR /demosite; //项目根目录
index index.html index.htm;
client_max_body_size 35m;
}
}
你可以阅读 Nginx 安装配置 了解更多内容。

设置完成后,在终端运行:

uwsgi –ini /etc/uwsgi9090.ini &
/usr/local/nginx/sbin/nginx
在浏览器输入:http://127.0.0.1,你就可以看到 django 的 “It work” 了。

Django Admin 管理工具
1 篇笔记
tianqixin

429***967@qq.com

参考地址

安装 uwsgi 如果失败,有可能是缺少Python的头文件和静态库,需要安装开发版本:

For apt (Ubuntu, Debian…):

sudo apt-get install python-dev # for python2.x installs
sudo apt-get install python3-dev # for python3.x installs
For yum (CentOS, RHEL…):

sudo yum install python-devel
For dnf (Fedora…):

sudo dnf install python2-devel # for python2.x installs
sudo dnf install python3-devel # for python3.x installs
For zypper (openSUSE…):

sudo zypper in python-devel # for python2.x installs
sudo zypper in python3-devel # for python3.x installs

Django框架全面讲解(1)

Python的WEB框架有Django、Tornado、Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM、模型绑定、模板引擎、缓存、Session等诸多功能。

因为有许多小伙问我Django是什么,所以本文将带大家全面了解Django框架,笔者使用的版本为1.10.

流程:

基本配置
路由系统
视图view
模板
Model
中间件
Form
认证系统
CSRF
分页
Cookie
Seesion
缓存
序列化
信号
admin
一、 Django流程介绍

MVC是众所周知的模式,即:将应用程序分解成三个组成部分:model(模型),view(视图),和 controller(控制 器)。其中:
M——管理应用程序的状态(通常存储到数据库中),并约束改变状态的行为(或者叫做“业务规则”)。
C——接受外部用户的操作,根据操作访问模型获取数据,并调用“视图”显示这些数据。控制器是将“模型”和“视图”隔离,并成为二者之间的联系纽带。
V——负责把数据格式化后呈现给用户。

Django也是一个MVC框架。但是在Django中,控制器接受用户输入的部分由框架自行处理,所以 Django 里更关注的是模型(Model)、模板(Template)和视图(Views),称为 MTV模式:

M 代表模型(Model),即数据存取层。 该层处理与数据相关的所有事务: 如何存取、如何验证有效性、包含哪些行为以及数据之间的关系等。

T 代表模板(Template),即表现层。 该层处理与表现相关的决定: 如何在页面或其他类型文档中进行显示。

V 代表视图(View),即业务逻辑层。 该层包含存取模型及调取恰当模板的相关逻辑。 你可以把它看作模型与模板之间的桥梁。

二、 Django 基本配置
1. 创建django程序
终端命令:django-admin startproject sitename (在当前目录下创建一个Django程序)
IDE创建Django程序时,本质上都是自动执行上述命令
其他常用命令:

python manage.py runserver ip:port (启动服务器,默认ip和端口为http://127.0.0.1:8000/)

python manage.py startapp appname (新建 app)

python manage.py syncdb (同步数据库命令,Django 1.7及以上版本需要用以下的命令)

python manage.py makemigrations (显示并记录所有数据的改动)

python manage.py migrate (将改动更新到数据库)

python manage.py createsuperuser (创建超级管理员)

python manage.py dbshell (数据库命令行)

python manage.py (查看命令列表)

2. 程序目录

3. 配置文件
a、数据库
支持SQLite 3(默认)、PostgreSQL 、MySQL、Oracle数据库的操作

具体配置
Django框架对于开发者而言高度透明化,对于不同数据库的具体使用方法是一致的,改变数据库类型只需要变动上述配置即可。

第一章: 介绍Django
这本书是关于Django。Django是一种Web开发框架,对于Web开发来说可以更高效、更有趣。Django允许您以最小的成本构建和维护高质量的Web应用程序。

从好的方面来说,Web开发是有趣和有创意的。另一方面,Web开发可能很乏味。通过减少重复,Django允许您关注Web应用程序的核心,从而使开发更加有趣。为了实现这个目标,Django提供了一个高级的抽象,从常见的Web开发模式,到常见任务的快捷方式,以及如何解决问题的清晰约定。与此同时,Django尝试留下一些您可以在框架之外开发的方法,以满足您自己的需求。

这本书的目标是把你从知道django是什么变成一个Django专家。主要关注两个领域:首先,我们将深入研究Django做什么以及如何使用它构建Web应用程序。其次,我们将在适当的时候讨论一些更高级的概念,并解释如何在您自己的项目中有效地使用这些工具。通过阅读这本书,你将学会如何快速开发一个强大的网站,你的代码将变得清晰和易于维护。

什么是Web框架?
Django是新一代Web框架的领导者,但是什么是Web框架呢?

为了回答这个问题,让我们首先考虑一下如何在没有Web框架的情况下设计一个Python语言程序。在本书中,我们将继续使用这种方法,首先向您展示在没有框架的情况下实现功能的基本方法,以便您能够认识到框架可以带来的便利。知道如何从框架中跳出来解决问题也很有用,因为有时候框架并不能为您的问题提供正确的解决方案。更重要的是,理解实现的上下文将使您成为更好的Web开发人员。

在Python中开发Web应用程序的最简单和最原始的方法是使用Comman网关接口标准,该标准在1998年很流行。它的工作方式如下:创建Python脚本、打印HTML代码、将脚本保存到Web服务器,并将脚本后缀更改为“”。cgi”。

下面是一个使用Python CGI脚本从数据库中读取和列出最后10本书的示例。不要担心不能读取语法细节,只需要了解代码在做什么。

FBI的突袭报告公布后,华尔街股指期货上涨,但涨幅收低

纽约(路透社)—周一华尔街的主要股指上涨的温和立场,美国政策制定者对中国关税的反弹从上周的抛售,但股市缩减涨幅尾盘后报告说,联邦调查局搜查了总统办公室的唐纳德·特朗普的律师。

科技股和健康股领涨标普500指数的主要板块。默克公司(Merck & Co .)是道指最大的推动力,而苹果公司(Apple)的股价涨幅领先于纳斯达克指数。在特朗普的新经济顾问Larry Kudlow向CNBC表示,总统可能会成立一个国际联盟来解决涉及中国的贸易问题时,股市上涨。中国国家主席习近平周二在博鳌亚洲论坛经济会议上发表讲话时,投资者将进一步了解中国在贸易关系上的立场。但在下午晚些时候,股市开始下跌,这是一种下降趋势。此前有报道称,美国联邦调查局(FBI)在特朗普的私人律师迈克尔•科恩(Michael Cohen)的任命下,突袭了特朗普的私人律师迈克尔•科恩(Michael Cohen)的纽约办公室。“即使最终没有结果,市场上的最初反应也几乎总是负面的,”Charles Schwab的交易和衍生产品副总裁Randy Frederick说。投资者期待着财报季的开始,为美国股市提供持续的提振,包括摩根大通(JPMorgan Chase)、花旗集团(C.N:行情)和富国银行(Wells Fargo)等大型银行将于周五公布第一季度业绩。

根据汤森路透I/B/E/S,分析师预计股指期货成份股公司的季度利润较上年同期增长18.5%,为7年来最大增幅。道琼工业指数. dji上涨46.34点,或0.19%,报23,979.10点,标准普尔500指数. spx上涨8.69点,或0.33%,报2,613.16点,Nasdaq综合股价指数. ixic上涨35.23点,或0.51%,报6,950.34点。AveXis公司股价上涨81.6%,此前瑞士制药公司诺华制药公司提出以87亿美元收购这家基因治疗公司。默克公司股价上涨5.2%,此前该制药公司的重磅抗癌药物Keytruda达到了帮助先前未得到治疗的肺癌患者延长寿命的主要研究目标。Leucadia National Corp (LUK.N:行情)股价大涨11.6%,此前该公司表示将出售大部分非金融资产,以专注于投资银行和咨询服务。

在纽约证券交易所,下跌的问题比上涨的股票要高1。10比1;在纳斯达克,1.13比1的比率受到青睐。美国交易所的成交量为62.8亿股,而在过去20个交易日中,整个交易日的成交量为73亿股。

股票期货反弹,日元下跌,叙利亚受到冲击

美国和日本的股指期货反弹,日元下跌,因为交易员们押注美国主导的对叙利亚的打击可能会造成更大的影响。黄金下降。

周一上午,投资者对中东地缘政治紧张局势的影响进行了评估。尽管民意调查显示日本首相安倍晋三(Shinzo Abe)的政府支持率不断下降,但国际社会对叙利亚罢工的反应使日元贬值。美国商品期货交易委员会(CFTC)数据显示,对冲基金是5年来最悲观的美元。美国总统川普星期六在推特上宣布“任务完成”。法国和英国对叙利亚领导人巴沙尔·阿萨德(Bashar al-Assad)涉嫌对平民进行化学攻击,发动了军事打击。尽管地缘政治方面的担忧挥之不去,但本周的焦点仍是美国的财报季,以及一些即将发表讲话的美联储官员,包括即将上任的纽约联邦储备银行(New York Fed)行长约翰•威廉姆斯(John Williams)。RMG财富管理公司(RMG Wealth Management LLP)驻伦敦的首席投资官斯图尔特•理查森(Stewart Richardson)表示:“在叙利亚发生的可怕事件,我们只是不认为它们会长期影响市场。”在其他地方,债券市场的收益率曲线趋平仍是争论的焦点。两年期和10年期公债利差周五跌至45.3个基点,为2007年10月以来最窄。

以下也是本周需要注意的事情:高盛集团(Goldman Sachs Group Inc.)和摩根士丹利(Morgan Stanley)的财报显示,即将成为纽约联邦储备银行(New York Fed)行长的约翰•威廉姆斯(John Williams)周二在马德里发表了《经济展望》(economic outlook)。中国的GDP和日本的通货膨胀是亚洲特色的数据点。周二,特朗普对日本首相安倍晋三(Shinzo Abe)表示欢迎。朝鲜和贸易可能会被讨论。矿业投资者本周将迎来全球工业的脉搏,淡水河谷、里约热内卢和必和必拓将提供季度产量报告。

以下是市场的最近主要走势:

1、股票。日本东京日经225指数的股指期货上涨了0.6%。标准普尔500指数期货上涨0.7%。该指数周五下跌0.3%。摩根士丹利资本国际全球指数上周上涨1.6%,创下3月9日以来最大涨幅。

2、货币。日元兑美元汇率下跌0.2%,至107.54日元。欧元兑美元汇率几乎没有变化,报1.2332美元。英镑兑美元汇率上涨不到0.1%,至1.4243美元。彭博(Bloomberg)美元现货指数上涨不到0.1%。上周下跌了0.5%。

3、债券。10年期美国国债收益率下跌2个基点,至2.82%。澳大利亚10年期国债收益率上升逾1个基点,至2.75%。

4、大宗商品。西德克萨斯中质原油下跌0.4%,至每桶67.15美元。金价下跌0.3%,至每盎司1,342.55美元。

中国考虑放宽对股指期货的限制

据知情人士说,中国正在考虑放宽股指期货交易限制,这是在中国股市崩盘期间推出的。

官员们已经起草了一份提案,允许那些所谓的非对冲账户的机构投资者在被认为从事“非正常交易”的前一天,在多达100份合同中开设新的头寸。目前的限额是20份。

上述知情人士表示,该提议还有待中国证监会(csrc)的批准。中国证监会拒绝置评,中国金融期货交易所(China Financial Futures Exchange)的一名发言人表示,该公司尚未接到中国证监会有关头寸限制的任何指令。尽管中国一度是全球最活跃的股指期货市场,但在监管机构指责衍生品加剧了股市损失,并将头寸限制降低了98%之后,2015年的交易量出现了枯竭。尽管在2017年2月有小幅放松限制,但日交易量仍比峰值低99%左右。更宽松的限制将受到对冲基金和其他专业基金经理的欢迎,他们依赖期货来实施他们的投资策略,在市场上做空股票是困难的。新时代证券(New Times Securities)驻上海的研究主管刘广远(音)表示,对期货经纪商来说,成交量上升的可能性也是好消息。中国Cifco投资公司和江苏霍利公司的股票周四分别上涨4.1%和3.4%。上证综合指数(Shanghai Composite Index)下跌0.4%,较2016年崩盘后的低点上涨了21%。

在这一期货计划出台之际,中国高层官员最近发表了一系列声明,重申中国对金融改革的承诺。中国人民银行(pboc)行长易纲周三表示,监管机构将在6月30日之前,将上海-香港交易所(Shanghai-Hong Kong exchange)的每日配额增加四倍,并进一步实施金融部门开放。