Django學習

1.windows下安裝

2.創建第一個django程序

3.鏈接數據庫並創建數據表


Django 裏更關注的是模型(Model)、模板(Template)和視圖(Views),Django 也被稱爲 MTV 框架 。在 MTV 開發模式中:

  • M 代表模型(Model),即數據存取層。該層處理與數據相關的所有事務:如何存取、如何確認有效性、包含哪些行爲以及數據之間的關係等。

  • T 代表模板(Template),即表現層。該層處理與表現相關的決定:如何在頁面或其他類型文檔中進行顯示。

  • V 代表視圖(View),即業務邏輯層。該層包含存取模型及調取恰當模板的相關邏輯。你可以把它看作模型與模板之間的橋樑。


models.py就是Django裏面的建表所需的數據模型的描述:

命令:
python manage.py init 初始化數據庫
python manage.py sqlall [appname] 查看app的CREATE TABLE的語句,包括原始數據,創建索引等.
python manage.py sqlreset [appname] 修改models,不保留以前數據,進行重置數據庫,更新表。
python manage.py validate 用來排錯
python manage.py syncdb 用來建表
python manage.py sql databasename 用來查看已創建數據庫表結構



------------------我是分割線------------------

問題1解答:

1.在官網上下載.tar.gz包,解壓之後放在和python同一級目錄下。

2.進入到django目錄下,執行python setup.py install,安裝完成後發現D:\program files\Python27\Lib\site-packages\django存在,django就安裝在該目錄下

3.配置環境變量,在系統環境變量path中添加以下3項

D:\program files\Python27;
D:\program files\Python27\Lib\site-packages\django
D:\program files\Python27\Scripts

檢查是否安裝成功

D:\program files\Django-1.6.1>python
Python 2.7.1 (r271:86832, Nov 27 2010, 18:30:46) [MSC v.1500 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> django.get_version()
'1.6.1'
>>> exit()

4.創建Django工程

 進入Scripts目錄,創建自己的工程mytest.進入myproject目錄後,執行:manage.py runserver,來啓動Django的自帶Web服務器.默認端口號是8000

   目錄下有4個文件(很重要的4個文件):

    __init__.py:表明該目錄爲一個python包

     setting.py:項目設置文件

  urls.py:URL映射管理

     manage.py:對項目進行操作的命令

     wsgi.py:Python Web Server Gateway Interface,是Python應用程序或框架和Web服務器之間的一種接口。

D:\program files\Python27>cd Scripts
D:\program files\Python27\Scripts>django-admin.py startproject mytest
D:\program files\Python27\Scripts>cd mytest
D:\program files\Python27\Scripts\mytest>manage.py runserver
Validating models...
0 errors found
January 17, 2014 - 11:14:21
Django version 1.6.1, using settings 'mytest.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
[17/Jan/2014 11:15:07] "GET / HTTP/1.1" 200 1757
Validating models...

結束後輸入127.0.0.1:8000,顯示it works!說明成功

3.

數據庫建表過程:
1.創建應用程序
python manage.py startapp appname

2.用python代碼寫models.py,創建數據模型

from django.db import models
class Publisher(models.Model):
    name = models.CharField(maxlength=30)
    address = models.CharField(maxlength=50)
    city = models.CharField(maxlength=60)
    state_province = models.CharField(maxlength=30)
    country = models.CharField(maxlength=50)
    website = models.URLField()
3.模型的安裝
編輯settings.py
添加:
INSTALLED_APPS=(
       'mysite.appname',
}

4.創建數據庫表:
python manage.py validate    (驗證模型有效性)

python manage.py sqlall appname (生成CREATE TABLE語句)

python manage.py syncdb (執行上一步產生的SQL語句,簡表。不執行上一句也可以建,也可以把上一句執行產生的SQL語句放入SQL客戶端去執行,syncdb 僅僅創建數據庫中不存在的表,而不會同步模型的修改或者刪除到數據庫)

5.插入和更新數據
插入數據:
定義對象
p = Publisher(.....)         //將新的內容放到Publisher裏面賦給對象p
p.save()       //完成插入

上面相當於SQL語言:
INSERT INTO book_publisher
    (name, address, city, state_province, country, website)
VALUES
    ('Apress', '2855 Telegraph Ave.', 'Berkeley', 'CA',
     'U.S.A.', 'http://www.apress.com/');
更新數據:
p.name = 'NewName'        //修改對象p的名字
p.save()         //完成存儲

上面相當於SQL語言:
UPDATE book_publisher SET
    name = 'NewName',
    address = '2855 Telegraph Ave.',
    city = 'Berkeley',
    state_province = 'CA',
    country = 'U.S.A.',
    website = 'http://www.apress.com'
WHERE id = 52;
選擇對象:
Publisher.objects.all()
相當於SQL:
SELECT
    id, name, address, city, state_province, country, website
FROM book_publisher;
數據過濾
Publisher.objects.filter(name="NewName")
相當於SQL語句:
SELECT
    id, name, address, city, state_province, country, website
FROM book_publisher
WHERE name = 'NewName';

縮小範圍:
 Publisher.objects.filter(country="U.S.A.", state_province="CA")
相當於SQL語句:

SELECT
    id, name, address, city, state_province, country, website
FROM book_publisher
WHERE country = 'U.S.A.' AND state_province = 'CA';

模糊匹配:
Publisher.objects.filter(name__contains="press")

在 name 和 contains 之間有雙下劃線。象Python自己一樣,Django也使用 雙下劃線來做一些小魔法,這個 __contains 部分會被Django轉換成 LIKE SQL語句:

SELECT id, name, address, city, state_province, country, website FROM book_publisher WHERE name LIKE '%press%';

獲取單個對象:
Publisher.objects.get(name="Apress Publishing")數據排序:   Publisher.objects.order_by("name")
相當於SQL語句:
SELECT
    id, name, address, city, state_province, country, website
FROM book_publisher
ORDER BY name;

可以支持多個字段排序:
 Publisher.objects.order_by("state_provice", "address")

也可以逆向排序:
Publisher.objects.order_by("-name") 添加‘-’同時排序和過濾:  Publisher.objects.filter(country="U.S.A.").order_by("-name")
相當於SQL語句:
SELECT
    id, name, address, city, state_province, country, website
FROM book_publisher
WHERE country = 'U.S.A'
ORDER BY name DESC; 限制返回數據:  Publisher.objects.all()[Number]    //Number可以換成想要顯示的位置下標
相當於SQL語句:
SELECT
    id, name, address, city, state_province, country, website
FROM book_publisher
ORDER BY name
LIMIT 1; 刪除對象:p = Publisher.objects.get(name="NewName")
p.delete()


修改數據庫表結構:
添加字段:

首先,在開發環境中執行下面的步驟(也就是說,不是在發佈服務器上):

  1. 把這個字段添加到你的模型中.

  1. 運行 manage.py sqlall [yourapp] 會看到模型的新的 CREATE TABLE 語句。 注意新的字段的列定義。

  1. 啓動您的數據庫交互shell(也就是 psql 或 mysql , 或者您也可以使用 manage.py dbshell )。 執行一個 ALTER TABLE 語句,添加您的新列。SQL語句:(ALTER TABLE books_publisher ADD COLUMN test integer)

  2. (可選)用 manage.py shell 啓動Python交互式shell,並通過引入模型並選擇表 驗證新的字段已被正確添加。

刪除字段:
ALTER TABLE books_book DROP COLUMN test;刪除表:DROP TABLE books_book

參考

http://www.cnblogs.com/zhoujie/archive/2013/05/11/django1.html

http://www.admin10000.com/document/94.html


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章