Python的Web应用框架--Django
一:简介
python的web框架有很多,个人查了一下,有Django、Pylons、 Tornado、Bottle和Flask等,其中使用人数最多的是Django,而我学习Django也是因为openstack中使用的是django框架。
Django是一个开放源代码的Web应用框架,由Python写成,采用了MVC的软件设计模式,即模型M,视图V和控制器C。
二:安装
由于Django2.0以后便不再支持python2.x,所以在安装时一定要注意。
2.1.Python3.x+Django2.x
安装python-setuptools
yum install python-setuptools
下载Django安装包
easy_install django
2.2.Python2.x+Django1.x
安装python-setuptools
yum install python-setuptools
下载Django安装包
下载源码包:https://www.djangoproject.com/download/

点击历史版本中的1.11版本下载。
输入以下命令并安装:
tar xzvf Django-X.Y.tar.gz # 解压下载包
cd Django-X.Y # 进入 Django 目录
python setup.py install # 执行安装命令
2.3检验
[root@solar django]# python
Python 2.7.3 (default, May 15 2014, 14:49:08)
[GCC 4.8.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> django.VERSION
(1, 6, 5, 'final', 0)
>>>
三:创建第一个项目
3.1创建并浏览器展示
这里要学会使用django-admin.py管理工具,来创建。
创建项目
django-admin.py startproject HelloWord
进入项目,查看目录结构
[root@localhost ~]# cd HelloWorld/
[root@localhost HelloWorld]# tree
.
├── HelloWorld --------项目的容器
│ ├── __init__.py --------一个空文件,告诉 Python 该目录是一个 Python 包
│ ├── settings.py --------该djiango项目的设置、配置
│ ├── urls.py --------该djiango项目的URL声明,一份由djiango驱动的网站“目录”
│ └── wsgi.py --------一个 WSGI 兼容的 Web 服务器的入口,以便运行你的项目。
└── manage.py --------一个非常实用的管理工具,可以实现与django的各种交互 1 directory, 5 files
[root@localhost HelloWorld]#
启动服务器
python manage.py runserver 0.0.0.0:8000
再在浏览器中输入服务器IP:8000
此时要注意:
1:关闭防火墙,
2:如果出现“dango error:DisallowedHost: Invalid HTTP_HOST header: ''. You may need to add u'' to ALLOWED_HOST”错误,就修改settings.py文件中
ALLOWED_HOSTS = [‘*‘] #在这里请求的host添加了*

3.2修改视图内容
1.在HelloWorld/HelloWorld目录中创建一个新文件 view.py 文件,并输入代码:
from django.http import HttpResponse def hello(request):
return HttpResponse("Hello world ! ")
2.在 urls.py 文件中注释原来的代码,添加如下代码
from django.conf.urls import url from . import view urlpatterns = [
url(r'^$', view.hello),
]
然后启动django,访问浏览器出现如下内容

3.3修改URL
修改urls.py代码,在其中添加如下红色类似字符
from django.conf.urls import url from . import view urlpatterns = [
url(r'^yaohong$', view.hello),
]
然后启动django服务
再输入原来的服务器IP:8000会出现如下报错

因为需要再在端口号后面加入刚刚添加的字符,如下图所示

四:模板
4.1实现模板数据分离
1.创建模板文件
在HelloWorld下创建创建templates文件夹再在文件夹下创建hello.html,HelloWorld/templates/hello.html
[root@bogon HelloWorld]# tree
.
├── db.sqlite3
├── HelloWorld
│ ├── __init__.py
│ ├── __init__.pyc
│ ├── settings.py
│ ├── settings.pyc
│ ├── urls.py
│ ├── urls.pyc
│ ├── view.py
│ ├── view.pyc
│ ├── wsgi.py
│ └── wsgi.pyc
├── manage.py
└── templates
└── hello.html 2 directories, 13 files
在hello.html中添加如下代码
<h1>{{ hello }}</h1>
2.在settings.py中配置模板路径
修改 TEMPLATES 中的 DIRS 为 [BASE_DIR+"/templates",],
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'DIRS': [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',
],
},
},
]
3.在 view.py中想模板提交数据
在view.py中加入如下代码,其中“hello”为模板中的变量,“Hello Word! my name is yaohong”为提交的数据
from django.shortcuts import render def hello(request):
context = {}
context['hello'] = 'Hello World! my name is yaohong'
return render(request, 'hello.html', context)
4.启动服务器
python manage.py runserver 0.0.0.0:8000
在浏览器中输入地址

4.2Django模板标签
if/else 标签
{% if condition1 %}
... display 1
{% elif condition2 %}
... display 2
{% else %}
... display 3
{% endif %}
for 标签
{% for athlete in athlete_list %}
<h1>{{ athlete.name }}</h1>
<ul>
{% for sport in athlete.sports_played %}
<li>{{ sport }}</li>
{% endfor %}
</ul>
{% endfor %}
ifequal/ifnotequal 标签
{% ifequal %} 标签比较两个值,当他们相等时,显示在 {% ifequal %} 和 {% endifequal %} 之中所有的值。
{% ifequal user currentuser %}
<h1>Welcome!</h1>
{% endifequal %}
注释标签
{# 这是一个注释 #}
过滤器
#{{ name }} 变量被过滤器 lower 处理后,文档大写转换文本为小写
{{ name|lower }}
#将第一个元素并将其转化为大写。
{{ my_list|first|upper }}
include 标签
{% include "nav.html" %}
模板继承
首先新建一个要被继承的文件,这里命名为base.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>继承的学习</title>
</head>
<body>
<h1>Hello World!</h1>
<p>我是继承过来的!!!</p>
{% block mainbody %}
<p>original</p>
{% endblock %}
</body>
</html>
再在hello.html继承base.html页面
{% extends "base.html" %}
<h1>{{ hello }}</h1>
{% block mainbody %}<p>继承了 base.html 文件</p>
{% endblock %}

五:模型
5.1安装mysql
首先检查系统是否自带或者我们已经安装mysql,
rpm -qa | grep mysql
安装并启动mysql:
#非centos7版本
yum install mysql
yum install mysql-server
yum install mysql-devel
service mysqld start
#centos7版本执行如下
yum install mariadb-server mariadb
systemctl start mariadb #启动MariaDB
systemctl enable mariadb #设置开机启动
验证安装
执行下面语句会看到版本信息,如果没有任何输出,表示mysql没有安装成功
mysqladmin --version
设置用户
更改root密码
mysqladmin -u root password "new_password";
设置test用户密码
mysql -u root -p
>GRANT ALL PRIVILEGES ON test.* TO 'test'@'localhost' \
IDENTIFIED BY 'test123';
>GRANT ALL PRIVILEGES ON test.* TO 'test'@'%' \
IDENTIFIED BY 'test123';
5.2修改相应配置
1.数据库配置
在HelloWorld/HelloWorld/settings.py下修改DATABASES{}如下:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'test',
'USER': 'test',
'PASSWORD': 'test123',
'HOST':'localhost',
'PORT':'3306',
}
}
2.定义模型
创建APP
进入HelloWorld文件夹
django-admin.py startapp TestModel
创建完成后目录如下:
[root@localhost HelloWorld]# tree
.
├── db.sqlite3
├── HelloWorld
│ ├── __init__.py
│ ├── __init__.pyc
│ ├── settings.py
│ ├── settings.pyc
│ ├── testdb.py
│ ├── testdb.pyc
│ ├── urls.py
│ ├── urls.pyc
│ ├── view.py
│ ├── view.pyc
│ ├── wsgi.py
│ └── wsgi.pyc
├── manage.py
├── templates
│ ├── base.html
│ └── hello.html
└── TestModel
├── admin.py
├── admin.pyc
├── apps.py
├── __init__.py
├── __init__.pyc
├── migrations
│ ├── 0001_initial.py
│ ├── 0001_initial.pyc
│ ├── __init__.py
│ └── __init__.pyc
├── models.py
├── models.pyc
├── tests.py
└── views.py 4 directories, 29 files
修改HelloWorld/TestModel/models.py:
创建模型
# models.py
from django.db import models class Test(models.Model):
name = models.CharField(max_length=20)
修改settings.py
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'TestModel', # 添加此项
)
执行下列命令
$ python manage.py migrate # 创建表结构 $ python manage.py makemigrations TestModel # 让 Django 知道我们在我们的模型有一些变更
$ python manage.py migrate TestModel # 创建表结构
数据库操作
修改HelloWorld/HelloWorld/urls.py
from django.conf.urls import *
from . import view,testdb urlpatterns = [
url(r'^hello$', view.hello),
url(r'^testdb$', testdb.testdb),
]
创建HelloWorld/HelloWorld/testdb.py
# -*- coding: utf-8 -*- from django.http import HttpResponse from TestModel.models import Test # 数据库操作
def testdb(request):
test1 = Test(name='runoob')
test1.save()
return HttpResponse("<p>数据添加成功!</p>")
然后在浏览器中输入IP:8000/testdb

Python的Web应用框架--Django的更多相关文章
- 如何用Python做Web开发?——Django环境配置
用Python做Web开发,Django框架是个非常好的起点.如何从零开始,配置好Django开发环境呢?本文带你一步步无痛上手. 概念 最近有个词儿很流行,叫做“全栈”(full stack ...
- 【Python】【Web.py】详细解读Python的web.py框架下的application.py模块
详细解读Python的web.py框架下的application.py模块 这篇文章主要介绍了Python的web.py框架下的application.py模块,作者深入分析了web.py的源码, ...
- 基于Selenium+Python的web自动化测试框架
一.什么是Selenium? Selenium是一个基于浏览器的自动化测试工具,它提供了一种跨平台.跨浏览器的端到端的web自动化解决方案.Selenium主要包括三部分:Selenium IDE.S ...
- python之web自动化测试框架
梳理下搭建web自动化框架的流程: 创建目录: cases:存放测试用例,unittest框架要求用例名必须以test开头,所以命名test_case.py test_case.py代码如下:继承un ...
- python的web开发环境Django配置
我的系统的windows10: 第一步,安装python3.5 第二步,配置django,如图所示,在python的安装目录下的Scripts里面执行:pip install Django,我这儿提示 ...
- web应用框架Django
一.安装Django 打开网址https://www.djangoproject.com/download/进行查看 二.创建项目 打开命令行,进入想要安置项目的目录 命令行输入:django-adm ...
- Django-手撸简易web框架-实现动态网页-wsgiref初识-jinja2初识-python主流web框架对比-00
目录 自己动手实现一个简易版本的web框架 手撸一个web服务端 根据请求 url 做不同的响应处理 基于wsgiref模块实现服务端 用wsgiref 模块的做的两件事 拆分服务端代码 支持新的请求 ...
- Web.py 框架学习笔记 - URL处理
最近由于工作需要开始学习基于python的web应用框架web.py.为了方便学习,将学习心得逐日记下以便日后复习. URL 模板: web.py提供了一套url处理的模板,在python工程中,只需 ...
- Python之Web框架Django
Python之Web框架: Django 一. Django Django是一个卓越的新一代Web框架 Django的处理流程 1. 下载地址 Python 下载地址:https://www.pyt ...
随机推荐
- leaflet+esri-leaflet+heatmap实现热力图
1.环境准备 1)下载leaflet.js插件, 官网传送:http://leafletjs.com/ 2)下载esri-leaflet.js插件, 官网传送:http://esri.github ...
- Vue.js—快速入门
Vue.js是什么 Vue.js 是一套构建用户界面的渐进式框架.与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计.Vue 的核心库只关注视图层,它不仅易于上手,还便于与第三方库或既有项目 ...
- redis数据库安装及简单的增删改查
redis下载地址:https://github.com/MSOpenTech/redis/releases. 解压之后,运行 redis-server.exe redis.windows.conf ...
- 微信公众平台快速开发框架 For Core 2.0 beta –JCSoft.WX.Core 5.2.0 beta发布
写在前面 最近比较忙,都没有好好维护博客,今天拿个半成品来交代吧. 记不清上次关于微信公众号快速开发框架(简称JCWX)的更新是什么时候了,自从更新到支持.Net Framework 4.0以后基本上 ...
- [html5] 初识绘图canvas
这个星期被调到别的项目组专门做了一会儿前端,没办法,人太少,我也只能硬着头皮上... 说起来,html5的canvas真的好用,可以画色块,可以嵌入图片,可以通过定位在图片上写字等等 举例如下 在ht ...
- 一起写框架-Ioc内核容器的实现-基础功能-容器对象名默认首字母小写(八)
实现功能 --前面实现的代码-- 默认的对象名就类名.不符合Java的命名规范.我们希望默认的对象名首字母小写. 实现思路 创建一个命名规则的帮助类.实现将对大写开头的对象名修改为小写开头. 实现步骤 ...
- SQLServer2008数据库安装图解
SQLServer2008数据库安装图解... ======================================= 解压下载的安装包,右键运行Setup.exe文件 =========== ...
- riot.js教程【三】访问DOM元素、使用jquery、mount输入参数、riotjs标签的生命周期
前文回顾 riot.js教程[二]组件撰写准则.预处理器.标签样式和装配方法 riot.js教程[一]简介 访问DOM元素 你可以通过this.refs对象访问dom元素 而且还有大量的属性简写方式可 ...
- [转载] 应用于负载均衡的一致性哈希及java实现
转载自http://blog.csdn.net/haitao111313/article/details/7537799 这几天看了几遍一致性哈希的文章,但是都没有比较完整的实现,因此试着实现了一下, ...
- 【JDK1.8】JDK1.8集合源码阅读——TreeMap(一)
一.前言 在前面两篇随笔中,我们提到过,当HashMap的桶过大的时候,会自动将链表转化成红黑树结构,当时一笔带过,因为我们将留在本章中,针对TreeMap进行详细的了解. 二.TreeMap的继承关 ...