python的web框架有不少,我的查了一下,有Django、Pylons、 Tornado、Bottle和Flask等,其中使用人數最多的是Django,而我學習Django也是由於openstack中使用的是django框架。html
Django是一個開放源代碼的Web應用框架,由Python寫成,採用了MVC的軟件設計模式,即模型M,視圖V和控制器C。python
因爲Django2.0之後便再也不支持python2.x,因此在安裝時必定要注意。mysql
安裝python-setuptoolslinux
yum install python-setuptools
下載Django安裝包web
easy_install django
安裝python-setuptoolssql
yum install python-setuptools
下載Django安裝包數據庫
下載源碼包:https://www.djangoproject.com/download/django
點擊歷史版本中的1.11版本下載。centos
輸入如下命令並安裝:設計模式
tar xzvf Django-X.Y.tar.gz # 解壓下載包
cd Django-X.Y # 進入 Django 目錄 python setup.py install # 執行安裝命令
[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) >>>
這裏要學會使用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添加了*
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,訪問瀏覽器出現以下內容
修改urls.py代碼,在其中添加以下紅色相似字符
from django.conf.urls import url
from . import view urlpatterns = [ url(r'^yaohong$', view.hello), ]
而後啓動django服務
再輸入原來的服務器IP:8000會出現以下報錯
由於須要再在端口號後面加入剛剛添加的字符,以下圖所示
在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>
修改 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', ], }, }, ]
在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)
python manage.py runserver 0.0.0.0:8000
在瀏覽器中輸入地址
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 %}
首先檢查系統是否自帶或者咱們已經安裝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';
在HelloWorld/HelloWorld/settings.py下修改DATABASES{}以下:
DATABASES = {
'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'test', 'USER': 'test', 'PASSWORD': 'test123', 'HOST':'localhost', 'PORT':'3306', } }
建立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