Django介紹:
Django簡介:
為什么使用Django?
知識儲備:
學習目標:
DJango初體驗:
1.安裝DJango:
sudo pip install -i https://pypi.doubanio.com/simple/ Django
使用國內鏡像
創建Django項目
django-admin startproject demo
會在目錄下產生一個manage.py管理腳本
python manage.py runserver 0.0.0.0:8080 #局域網內的機子可以訪問本機ip的8080
mac訪問虛擬機中的Ubuntu里建的website
2.Django工程目錄:
_init_py:?聲明了這個子目錄上是一個python模塊
2.1 Django的應用目錄大致結構:
2.1.1 創建應用:
python manage.py startapp blog
2.1.2 添加應?用:
在settings.py 添加
2.1.3 應用目錄詳解:
_init_py:?聲明了這個子目錄上是一個python模塊
views.py:聲明了視圖邏輯
models.py:聲明了數據模型
admin.py:將數據模型注冊到Django內置的管理模塊中
tests.py:單元測試
migrations:用于數據遷移
舊版本代碼:
新版本代碼:
!(Django1.10需要修改的地方)[http://stackoverflow.com/questions/38394598/typeerror-view-must-be-a-callable-or-a-list-tuple-in-the-case-of-include]
!(Django 創建第一個項目)[http://www.runoob.com/django/django-first-app.html]
3.Django概述(重要概念)
Django開發-基礎篇
DJango模板語法及使用:
什么是模板
模板是一個文本,用于分離文檔和表現內容,通常用于生成HTML。
<html>
<head>template</head>
<body>
<p>Hello{{name}}</p>
<ul>
{% for item in itemlist %}
<li>{{item}}</li>
{% endfor %}
</ul>
{% if status %}
<p> I love python </p>
{% else %}
<p> I love django </p>
{% endif %}
</body>
模板使用方法:
1.用原始的模板代碼字符串創建一個Template對象
2.調用模板對象的render方法,并且傳入一套變量context
python manage.py shell
from django import template
t = template.Template('hello,{{name}}') #創建一個變量name
c = template.Context({'name':'django'}) #創建了一個context并傳入一個name的值
print t.render(c) #調用render方法來渲染
一旦你創建了一個template對象,你就可以用context處理器來傳遞數據給它,最用調用render()方法來渲染它
模板中過濾器:
過濾器就是將模板中的變量過濾一遍,在變量顯示前修改它的一個方法。
如:下列代碼中,upper就是一個過濾器:將name這個變量轉化為全部為大寫字母的格式。
{{name|upper}}
模板的加載 :
Django提供了一種使用方便且功能強大的API,用于解決模板加載調用過程的問題。
創建一個文件夾templates,并寫入模板:
在settings.py寫入
import os
TEMPLATES_DIRS = os.path.join(os.path.dirname(__file__),'templates')
#可以根據路徑查找模板
在manage.py shell 輸入:
from django.template.loader import get_template
t = get_template("2.html")
t
輸出:
<django.template.backends.django.Template at 0x7f6e2da0d790>
#說明模板使用成功
模型開發與數據庫交互:
使用原生方法連接數據庫:
from django.test import TestCase
import MySQLdb
db = MySQLdb.connect(user = 'root',password= 'root',db ='test')#連接數據庫
cursor = db.cursor() #創建一個游標
cursor.execute('select * from table')#使用sql語句
result = cursor.fetchall() #獲取返回的結果
cursor.close()
db.close() #關閉數據庫連接
配置settings.py文件:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',#選擇數據庫引擎
#'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
'USER':'root',
'PASSWORD':'root',
'NAME':'test',
'HOST':'localhost'
}
}
在模型中使用數據庫:
修改models.py:
from django.db import models
class Mysite(models.Model):
#定義一個title,字符串類型
title = models.CharField(max_length=100)
url = models.URLField()
author = models.CharField(max_length=100)
#定義一個num,整形
num = models.IntegerField(max_length=10)
檢查模型:
python manage.py check
將模型同步到數據庫中:
python manage.py makemigrations
python manage.py migrate
django1.10的很多操作跟現在出版的書里的命令都不一樣了
安裝python模塊時出現:error: Setup script exited with error: command 'gcc' failed with exit status 1
mysql-python安裝時EnvironmentError: mysql_config not found
模型開發與數據庫交互--數據處理:
1.基本數據訪問
from blog.models import *
m = Mysite.objects.all()
m
# Out[6]: <QuerySet []> #數據為空,輸出空列表
2.插入和更新數據
m = Mysite(title='django',num=2)
m.save()
m = Mysite.objects.all() #查詢所有
m
#Out[10]: <QuerySet [<Mysite: Mysite object>]>
m[0].title
#Out[11]: u'django'
3.數據過濾
m = Mysite.objects.get(num=2)
m
#Out[13]: <Mysite: Mysite object>
m.title
#Out[14]: u'django'
4.數據排序
#插入多條?數據
m = Mysite(title='django',num=3)
m.save()
m = Mysite(title='django',num=9)
m.save()
m = Mysite(title='django',num=1)
m.save()
#以num進行排序
m = Mysite.objects.all().order_by("num")
m[0].num
#Out[30]: 1L
5.更新多個對象,刪除對象等
m = Mysite.objects.get(num=2)
m.title
#Out[32]: u'django'
m.title = 'python' #更新數據
m.delete() #獲取對象后進行刪除即可
Django 的后臺管理及表單類介紹:
Django的自動管理界面:通過讀取你模式中的元數據,提供一個強大而且可以使用的界面。
例子:
修改views.py,編寫視圖函數:
from blog.models import *
from blog.forms import *
from django.http import HttpResponse
from django.shortcuts import render_to_response
def hello(request):
if request.method == 'POST':
form = Mybook(request.POST)#將post的數據填到表單里面
if form.is_valid(): #驗證是否有效
data = form.cleaned_data
title = data['title'] #取其中title數據
return HttpResponse(title)
form = Mybook()##如果是get請求,則返回這個頁面
return render_to_response('1.html',{'form':form})
添加froms.py:
from django import forms
class Mybook(forms.Form):
name = forms.CharField()
author = forms.CharField()
date = forms.CharField()
添加1.html:
<html>
<body>
<form method='post'>
{{form.as_p}}
<input type = "submit" name = "ok">
</from>
</body>
</html>