標籤:setup sqlite first type gcc 原始碼 www. net condition
一:簡介
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檢驗
[[email protected] django]# pythonPython 2.7.3 (default, May 15 2014, 14:49:08)[GCC 4.8.0] on linux2Type "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
進入項目,查看目錄結構
[[email protected] ~]# cd HelloWorld/[[email protected] 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[[email protected] 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 urlfrom . import viewurlpatterns = [ url(r‘^$‘, view.hello),]
然後啟動django,訪問瀏覽器出現如下內容
3.3修改URL
修改urls.py代碼,在其中添加如下紅色類似字元
from django.conf.urls import urlfrom . import viewurlpatterns = [ url(r‘^yaohong$‘, view.hello),]
然後啟動django服務
再輸入原來的伺服器IP:8000會出現如下報錯
因為需要再在連接埠號碼後面加入剛剛添加的字元,如所示
四:模板 4.1實現模板資料分離1.建立模板檔案
在HelloWorld下建立建立templates檔案夾再在檔案夾下建立hello.html,HelloWorld/templates/hello.html
[[email protected] 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.html2 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 renderdef 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 mysqlyum install mysql-serveryum install mysql-devel
service mysqld start
#centos7版本執行如下
yum install mariadb-server mariadb
systemctl start mariadb #啟動MariaDBsystemctl 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
建立完成後目錄如下:
[[email protected] 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.py4 directories, 29 files
修改HelloWorld/TestModel/models.py:
建立模型
# models.pyfrom 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