1,安裝django : python setup.py install
2,django-admin.py startproject csvt01---》表示新建一個項目csvt01
3,有以下目錄:
1,__init__.py 初始化
2,settings.py django的設置
DEBUG=TRUE 表示開啓debug功能
LANGUAGE_CODE='zh-cn' 語言爲中文
TIME_ZONE=‘Asia/Shanghai’地區爲中國上海
INSTALLED_APPS 把用戶的應用添加到此中,本例爲blog
‘blog’,
3,urls.py url配置文件
url(r'^blog/index/$','blog.views.index'), -->此爲映射測試。意爲訪問csvt01的blog的index則轉移到blog(app)的views.index
4,manage.py 管理配置
4,django-admin.py startapp blog -->新建app,名爲blog。同上一樣.進入工程目錄下創建
1,編輯blog目錄下的views.py文件
定義一個方法
from django.http import HttpResponse
def index(req):
return HttpResponse('<h1>welcome to django </h1>')
2,使用命令 python manage.py runserver啓動服務
5,建立模板集合 blog/templates。並把需要發佈的文件移動到此,本例爲hello.html
6,靜態加載模板文件 vim blog/views.py
方法一:
from django.template import loader,Context --》導入模板模塊
def index(req):
t=loader.get_tempplate('hello.html') --》加載模版文件
c=Context({}) --
return HttpResponse(t.render(c)) -->渲染context數據,然後通過response返回
方法二:from django.shortcuts import render_to_response
def index(req):
return render_to_response('index.html',{})
7,動態加載文件(配合字典使用)
在源文件中使用變量,在映射的文件中views.py定義變量
還可以使用字典,key作爲變量
動態變量爲用大括號包住: 例: {{title}},`user`
方法三:from django.shortcuts import render_to_response
def index(req):
return render_to_response('index.html',{'title':'my page','user':'tom'})
方法四:from django.shortcuts import render_to_response
def index(req):
user={'age':23,'name':'tom','sex':'male'}
return render_to_response('index.html',{'title':'my page','user':user})
可以在原動態變量文件中直接引用:例: user.name 等等
方法五:
class Person(object):
def __init__(self,name,age,sex):
self.name=name
self.age=age
self.sex=sex
def say(self):
return “i'm”+self.name
def index(req):
user=Person('tom',24,'male')
return render_to_response('index.html',{'title':'my page','user':user})
8,模板標籤的使用。在模板文件中配置。index.html
1,{% if user %} if中的and和or不能直接連用;bool;==,!=;in,not in;
<li>name:`user`.`name`</li>
{% else %}
用戶不存在
{% endif %}
2,{% for book in book_list %}
........
{% empty %}
........
{% endfor %}
例:{% for k,v in user.items %}
<li>`k`:`v`</li>
9,URLconfig urls.py文件
使用方式;
1,url(r'^blog/index/$','blog.views.index'),正則表達式
2,from blog.views import index 直接導入的方式
url(r'^blog/index/$',index),
3,urlpatterns=patterns('blog.views',
url(r'^blog/index/$','index'),
)
4,urlpatterns=patterns('blog.views',
url(r'^blog/index/\d{2}/$','index'),
)
5,urlpatterns=patterns('blog.views',
url(r'^blog/index/?P<id>\d{2}/$','index'), -->參數分組id
10,模板的使用
1,新建項目
2,進入項目,創建應用blog
3,配置settings.py文件。添加應用
4,進入到應用目錄中,創建一個默認的文本目錄templates
5,編輯urls.py。建立一個測試的url. url(r'^index/$','blog.views.index')
6,編輯應用下面的views.py文件,創建index方法
模板的使用步驟:
1,模板文件的加載
from django.template import loader,Context
from django.http import HttpResponse
def index(req):
t=loader.get_template('index.html') ->載入模板文件。需要建立文件
c=Context({'uname':'alen'}) ->創建context對象,變量(字典)渲染。此處uname爲key.
html=t.render(c) ->渲染數據
return HttpResponse(html) ->輸出
也可以使用shell測試。
ipython manage.py shell
2,直接使用template類
from django.template import Template,Context
def index(req):
t=Template('<h1>`uname`</h1>')
c=Context({'uname':'csvt'})
return HttpResponse(t.render(c))
3,使用render_to_response方法
from django.shortcuts import render_to_response
def index(req):
return render_to_response('index.html',{'uname':'csvt02'}) --->參數一爲模板文件,參數二爲渲染的變量
11,數據庫的基本使用
安裝數據庫:yum -y install mysql*
啓動數據庫:service mysqld start。
使用root用戶登錄數據庫:mysql -uroot -p。
創建數據庫
create database csvt default charset=utf8
安裝MySQL-python.在python下,import MySQLdb.連接數據庫
1,創建新工程,進入工程並創建應用
2,配置settings。添加應用,添加數據庫 。
在默認的引擎下把mysql添加上
name項添加database名csvt
用戶名root
password,host,port可以使用默認。mysql端口默認爲3306
3,編輯應用目錄下的models.py文件
class Employee(models.Model): -->當數據庫同步後,此爲一張表,表名爲應用名+類名
name=models.CharField(max_length=20)
4,數據庫同步.會創建多個表(重要爲blog_employe)
python manage.py syncdb -->自動檢測應用,檢查應用下是否有models,如果有則自動創建表
5,使用數據庫use csvt
show tables;desc blog_employee
12,數據庫的基本使用2:
python manage.py shell -->進入python的交互界面
配置數據庫記錄方式一:
1,導入類對象: from app1.models import Employee
2,創建實例對象:emp=Employee()
3,創建屬性: emp.name='alen'
4,保存: emp.save()
配置數據庫記錄方式二;
1,實例化對象:emp=Employee(name='tom')
2,保存:emp.save()
配置數據庫記錄方式三:
1,直接通過類方法:Employee.objects.create(name='max')
查看:
emps=Employee.objects.all()
emps
emps[0].id[name]
在類文件app1.models.py中增加方法:
def __unicode__(self):
return self.name
然後再次查看
使得在瀏覽器上可以查看:
在url文件中新增記錄:
url(r'^index/$','app1.views.index')
然後在app1的views文件下,定義index方法:
from app1.models import Employee
from django.shortcuts import render_to_response
def index(req):
emps=Employee.objects.all() -->獲取記錄
return render_to_response('index.html',{'emps':emps}) -->渲染數據
接着創建模版集template/index.html
編輯配置模板文件index.html
可以配合模板標籤,規範顯示
{% for emp in emps %}
<div>`forloop`.`counter``emp`</div>
{% endfor %}
<div>共有{{emps.length}}記錄</div>
13,model之間的關係
1,manytoone:多對一
1,創建項目,進入項目內創建app,修改settings文件,配置db數據庫,apps添加
2,配置model對象:
class Entry(models.Model):
name=models.CharField(max_length=30)
def __unicode__(self):
return self.name
class Blog(models.Model):
name=models.CharField(max_length=30)
entry=models.ForeignKey(Entry) -->此處Entry爲one
def __unicode__(self):
return self.name
3,進入數據庫,創建數據庫
4,數據庫同步 python manage.py syncdb
5,進入交互界面 python manage.py shell
from blog.models import Entry,Blog
entry1=Entry.objects.create(name='alen') -->首先創建one對象
entry2=Entry.objects.create(name='max')
entry3=Entry.objects.create(name='max1')
blog1=Blog.objects.create(name='alen-blog',entry=entry1)
blog1查找;
blog1.entry ; blog_entry_id -->many端進行的查詢
entry1.blog_set.all() -->one端進行的查詢
14,後臺管理數據庫
1,創建工程csvt05,進入工程目錄;創建應用blog,配置settings文件,數據庫爲sqlite3;添加應用
然後把django.contrib.admin應用啓用
2,修改url.py文件.加入一下內容
from django.contrib import admin
admin.autodiscover()
url(r'^admin/',include(admin.site.urls))
3,修改models文件:
from django.db import models
sex_choices=(
('f','female'),
('m','male'),
)
class User(models.Model):
name=models.CharField(max_length=20)
sex=models.CharField(max_length=1,choices=sex_choices)
def __unicode__(self):
return self.name
4,數據庫的同步 python manage.py syncdb
5,運行開發服務器 python manage.py runserver
6,創建文件 blog/admin.py
from django.contrib import admin
from blog.models import User
admin.site.register(User)
7,測試
sqlite3 csvt04.db
.help查看幫助
.tables顯示所有表
15,model中多對多的關係
1,創建工程,進入工程目錄,創建應用;修改settings,設置數據庫sqlite3,加入應用admin及需要的應用
2,編輯models,
from django.db import models
class Author(models.Model):
name=models.CharField(max_length=20)
def __unicode__(self):
return self.name
class Book(models.Model):
name=models.CharField(max_length=30)
authors=models.ManyToManyField(Author)
def __unicode__(self):
3,數據庫同步 python manage.py syncdb
4,進入數據庫 sqlite3 db
5,管理數據.
進入解釋器 python manage.py shell
from blog.models import Author,Book
Author.objects.create(name='alen')
Author.objects.create(name='ben')
Author.objects.create(name='carl')
authors=Author.objects.all()
b1=Book()
b1.name='python book1'
b1.save()
alen=Author.objects.get(name__exact='alen') =====alen=authors[0]-->獲取作者
b1.authors.add(alen) -->添加書的作者爲alen
b1.authors.add(authors[1]) -->添加書的作者
b1.authors.all() -->查看b1的所有作者
b1.authors.remove(alen) -->刪除作者
b1.authors.filter(name__exact='carl')
alen.book_set.all() -->查看alen的所有書
alen.book_set.add(b1) -->alen添加一本書b1
alen.book_set.create(name='python book2') ->添加書
books=Book.objects.all() -->查看所有書
alen.book_set.remove(books[0]) -->刪除書
16,數據呈現在頁面
承接上文內容
for author in Author.objects.all():
for book in author.book_set.all():
print book
1,創建模板目錄,並創建模板文件show_author.html
{% for author in authors %}
<div>
<h3>`author`.`name`</h3>
{% for book in author.book_set.all() %}
<li>` book `</li>
{% endfor %}
</div>
模板文件show_book.html
{% for book in books %}
<div>
<h1>`book`.`name`</h1>
{% for author in book.authors.all %}
<li>`author`</li>
{% endfor %}
</div>
2,編輯views.py
from blog.models import Author,Book
from django.shortcuts import render_to_response
def show_author(req):
authors =Author.objects.all()
return render_to_response('show_author.html',{'authors':authors})
def show_book(req):
books =Book.objects.all()
return render_to_response('show_book.html',{'books':books})
3,配置url.py文件
url(r'^blog/show_author/$','blog.views.show_author')
url(r'^blog/show_book/$','blog.views.show_book')
4,開啓開發服務器 python manage.py runserver
17,表單form
1,創建項目,進入該目錄,創建應用;修改settings文件sqlite3,name,app添加
2,編輯url文件
url(r'^blog/register/$','blog.views.register')
3,編寫views文件
from django import forms
from django.http import HttpResponse
from django.shortcuts import render_to_response
class UserForm(forms.Form)
name=forms.CharField()
def register(req):
if req.method=='POST' -->數據提交動作
form = UserForm(req.POST) -->綁定數據
if form.is_valid():
print form.cleaned_data ->數據獲取
return HttpResponse('ok')
else: -->數據獲取動作(get)
form =UseForm()
return render_to_response('register.html',{'form':form})
4,創建模板文件register.html
<body>
<form method="post">
`form`
<input type="submit" value="ok">
</form>
</body>
5,啓動服務python manage.py runserver
6,配置settings文件,把MIDDLEWARE_CLASSES中的csrf那行註釋掉